xmlhttprequest responsetext为null

时间:2018-12-19 18:58:05

标签: javascript php xmlhttprequest

我正在尝试建立基本的HTML Server连接,因此我想调用和JS函数,该函数应该调用一个“ hello world”来调用PHP文件。到目前为止,一切正常,但是我得到的响应似乎是无效的。 我已经阅读了各种教程,但没有找到答案,希望有人可以帮助我。

            var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function() {
            if (xhttp.readyState == XMLHttpRequest.DONE && xhttp.status==200 && xhttp.responseText!=null) {
                alert("Responestext: " + xhttp.responseText + "  ENDE");
            }else if(xhttp.status==403){
                alert("forbidden");
            }else if(xhttp.status==404){
                alert("not found");
            }else if(xhttp.responseText==null) {
                alert("response text = null");
            }else{
                alert("Error");
            }
        };
        xhttp.open("GET", "http://URL/fahrgemeinschaft/login.php", true);
        xhttp.send(null);

我希望输出为“ Responsetext:hello world ENDE”,但我得到的只是“ Error”。 我还有两个警告框,上面也说“错误”。

1 个答案:

答案 0 :(得分:0)

问题在于,您的onreadystatechange处理程序会被每个就绪状态更改事件调用,而不仅仅是完成时。

您应该跳过未完成的事件:

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (xhttp.readyState != XMLHttpRequest.DONE) {
        return;
    }
    if (xhttp.status==200 && xhttp.responseText!=null) {
        alert("Responestext: " + xhttp.responseText + "  ENDE");
    }else if(xhttp.status==403){
        alert("forbidden");
    }else if(xhttp.status==404){
        alert("not found");
    }else if(xhttp.responseText==null) {
        alert("response text = null");
    }else{
        alert("Error");
    }
};
xhttp.open("GET", "http://messenger.hopto.org:8080/fahrgemeinschaft/login.php", true);
xhttp.send(null);

或者为了使自己更轻松,只要不需要支持过时的浏览器,只需使用onload事件即可。

var xhttp = new XMLHttpRequest();
xhttp.onload = function() {
    if (xhttp.status==200 && xhttp.responseText!=null) {
        alert("Responestext: " + xhttp.responseText + "  ENDE");
    }else if(xhttp.status==403){
        alert("forbidden");
    }else if(xhttp.status==404){
        alert("not found");
    }else if(xhttp.responseText==null) {
        alert("response text = null");
    }else{
        alert("Error");
    }
};
xhttp.open("GET", "http://messenger.hopto.org:8080/fahrgemeinschaft/login.php", true);
xhttp.send(null);