我是AJAX的新手,现在从Head First AJAX
学习它。我面临的问题真的很奇怪。我开发了一个简单的程序,通过JavaScript创建请求,然后显示输出。
main.js
window.onload = initPage;
function initPage() {
request = createRequest();
if(request == null) {
alert("request could not be created");
}
else {
var url = "requestMe.php";
request.onreadystatechange = showResult;
request.open("GET", url, true);
request.send(null);
}
}
function showResult() {
if(request.readyState == 4) {
if(request.status == 200) {
if(request.responseText == "okay") {
alert("A successful request was returned");
}
else {
alert("ALERT : " + request.responseText);
}
}
else {
alert("Request status received was not correct");
}
}
}
//--function to create request objects--
function createRequest(){
try{
request = new XMLHttpRequest();
}
catch(tryMS){
try{
request = new ActiveXObject("Msxm12.XMLHTTP");
}
catch(otherMS){
try{
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(failed){
request = null;
}
}
}
return request;
}
现在,这是php脚本。
requestMe.php
<?php
echo 'okay';
?>
此代码应提供警告 A successful request was returned
但它会提供结果 ALERT : okay
奇怪的是,当我尝试它时,昨天同样的代码正在为我工作,现在它正在给我这个结果。我试图创建类似的程序,他们都向我展示了这种奇怪的行为。收到的responseText
是正确的,因为它会在 okay
之后附加 ALERT :
。我在代码中做了什么错?当收到的else
是正确的时,为什么会转到responseText
部分?
任何帮助?提前谢谢。
答案 0 :(得分:0)
在 echo'okay'之后添加退出; ;
您的代码中的问题是在?&gt; 之后有空间,您可以通过删除?&gt; 或在之后删除额外空格来修复它? &GT; 强>
我希望它能解决你的问题。
答案 1 :(得分:0)
我个人会通过以下方式使用jQuery's Ajax Function来完成它:
document.addEventListener("DOMContentLoaded", function()
{
$.ajax({
"url": "requestMe.php"
}).done(function(data)
{
if(data == "okay")
{
alert("A successful request was returned");
} else
{
alert("ALERT : " + data);
}
}).fail(function()
{
alert("Connection Failed");
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
我还没有对这个剧本进行过测试,但理论上它应该可以很好地运作。