所以我用纯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.";
?>
答案 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中检查这个。