我是ajax的新手,但现在我的ajax脚本出了问题。我正在使用代码:
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject() {
var xmlHttp;
if(windows.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlHttp = false;
}
} else {
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
xmlHttp = false;
}
}
if (!xmlHttp) {
alert('Cant create object hoss!');
} else {
return xmlHttp;
}
}
function process() {
alert('State is: ' + xmlHttp.readyState);
if (xmlHttp.readyState==0 || xmlHttp.readyState==4) {
alert('Process is ready!');
food = encodeURIComponent(document.getElementById("userInput").value);
xmlHttp.open("GET", "foodstore.php?food=" + food, true);
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.send(null);
} else {
alert('Process is not ready!');
setTimeout('process()', 1000);
}
}
我已经调试了我的进程(),我发现如果我使用第一个警报没有xmlHttp.readyState所以它向我显示消息框其他方式如果我添加xmlhttp不起作用,如果我在进程中评论我的第一个警报()其他2警报根本没有重复。
我的网络服务器使用xampp时可能犯了一些错误或者可能出现了一些问题。
答案 0 :(得分:0)
您需要使用javascript调试程序,例如Google Chrome中提供的调试程序。
您会发现警报未显示,因为xmlHttp.readyState未定义。由于该行代码(未定义变量)中存在错误,警报将不会显示。
未定义的原因是因为它处于功能范围内。您的process
函数将永远无法查看createXmlHttpRequestObject
函数中的变量。
一旦快速,尽管不优雅的解决方案是使xmlHTTP成为全局变量,而不是在每个函数中重新声明它。