xmlhttp请求状态总是返回0

xmlhttp request status always returns 0

本文关键字:返回 请求 状态 xmlhttp      更新时间:2023-09-26

我有一个函数,它使用普通的旧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文件。

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