AJAX请求无效

时间:2011-06-04 22:56:20

标签: php javascript ajax

所以我用纯PHP工作得很好。当您点击提交时,表单已提交并且PHP页面已加载。所以我尝试实现AJAX,以便在提交表单时不必重新加载页面,但现在变量永远不会到达PHP脚本。

这就是我所拥有的:

<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>

AJAX js文件:

   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); 
}

最后是php脚本:

<?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.";
?>

2 个答案:

答案 0 :(得分:2)

您正在使用getElementById()来获取元素:

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

但您的HTML元素没有ID。像这样更新它们:

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

或者更改您的javascript以使用getElementByName()。

但是,如果添加jQuery是一个选项,可能就是这么简单:

<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>

巨型ajaxFunction()将被使用jQuery的~8行JS替换。

答案 1 :(得分:0)

打开萤火虫,打开坚持。单击按钮并检查传出请求。确保您正在发送数据。另外在你的php脚本中执行$ _REQUEST的转储。在firebug中检查这个。