ajax在xmlHttp.readystate上制动

时间:2014-01-03 11:48:27

标签: javascript php ajax

我是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时可能犯了一些错误或者可能出现了一些问题。

1 个答案:

答案 0 :(得分:0)

您需要使用javascript调试程序,例如Google Chrome中提供的调试程序。

您会发现警报未显示,因为xmlHttp.readyState未定义。由于该行代码(未定义变量)中存在错误,警报将不会显示。

未定义的原因是因为它处于功能范围内。您的process函数将永远无法查看createXmlHttpRequestObject函数中的变量。

一旦快速,尽管不优雅的解决方案是使xmlHTTP成为全局变量,而不是在每个函数中重新声明它。