开发者

AJAX request not working

So I had this working fine with pure PHP. When you hit submit the form was submitted and the PHP page was loaded. So I tried to implement AJAX so that the page didn't have to reload when the form was submitted, but now the variables are never reaching the PHP script.

Here's what I've got:

<form method="get" action="sms.php">
<input type="text" name="number" value="Phone number" /><br />
<textarea type="开发者_如何转开发text" name="message" rows="5" cols="20"></textarea><br />
<input type="button" onclick="ajaxFunction()" value="Send" />
</form>

The AJAX js file:

   function ajaxFunction(){
    var ajaxRequest;

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            var ajaxDisplay = document.getElementById('confirm');
            ajaxDisplay.innerHTML = ajaxRequest.responseText;
        }
    }
    var number = document.getElementById('number').value;
    var message = document.getElementById('message').value;
    var queryString = "?number=" + number + "&message=" + message;
    ajaxRequest.open("GET", "sms.php" + queryString, true);
    ajaxRequest.send(null); 
}

and finally the php script:

<?php
$number = $_GET["number"];
$message = $_GET["message"];

$client = new SoapClient('http://sms2.cdyne.com/sms.svc?wsdl');
$param = array(
    'PhoneNumber' => $number,
    'LicenseKey' => 'xxxxxxxxxxxxxxxxxxxxxxxx',
    'Message' => $message,
    );

echo "SMS sent.";
?>


You're using getElementById() to get the elements:

var number = document.getElementById('number').value;
var message = document.getElementById('message').value;

But your HTML elements do not have ID's. Update them like this:

<input type="text" ID="number" value="Phone number" /><br />
<textarea type="text" ID="message" rows="5" cols="20"></textarea><br />

Or change your javascript to use getElementByName().

However, if adding jQuery is an option, it could be this simple:

<input type="text" id="number" value="Phone number" /><br />
<textarea type="text" id="message" rows="5" cols="20"></textarea><br />
<input type="button" id="submitform" value="Send" />

<script>
$(document).ready(function() {
  $('#submitform').click(function() {
     var num = $('#number').value();
     var msg = $('#message').value();
     $.get('sms.php',{number: num, message: msg}, function(response) { alert(response); });
  });
});
</script>

That giant ajaxFunction() would be replaced by ~8 lines of JS using jQuery.


Open up firebug, turn on persist. Click the button and examine the outgoing request. Make sure that you are sending data. Additionally in your php script do a dump of $_REQUEST. Inspect this in firebug.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜