xmlhttprequest状态始终返回0

时间:2014-10-03 14:31:58

标签: javascript php ajax header http-status-codes

我有一个使用普通旧JS获取请求的函数。

function get(url,funct){
    var xmlhttpget = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttpget.onreadystatechange=function(){
        if (xmlhttpget.readyState==4 && xmlhttpget.status==200){
            funct(xmlhttpget.responseText);
        }
    }
    xmlhttpget.open("GET",url,true);
    xmlhttpget.send();
}

我这样用:

  

get(url,function(resp){window.alert(resp);});

当我的回调函数停止工作时,我将get()函数修改为以下内容以进行调试:

function get(url,funct){
    var xmlhttpget = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    xmlhttpget.onreadystatechange=function(){
        window.alert("ready state: "+xmlhttpget.readyState+" // status: "+xmlhttpget.status);
        if (xmlhttpget.readyState==4 && xmlhttpget.status==200){
            window.alert("responded...");
            funct(xmlhttpget.responseText);
        }
    }
    window.alert(url);
    xmlhttpget.open("GET",url,true);
    xmlhttpget.send();
}

有了这个,我发现,在每个readystate更改期间,readystate将从1进展到2到4,但状态始终保持为0,因此我的回调从未被调用,但是,当我将提醒的URL复制到浏览器时工作正常。

发生了什么?我的浏览器是否缓存了该页面?我该如何解决它(用php设置所请求页面上的特定标题?)?

哦,不确定这是否相关,但是调用该函数的页面位于其父文档包含相同JavaScript文件的框架内。

1 个答案:

答案 0 :(得分:0)

尝试打印对象的statusText。您可能会遇到浏览器安全策略。