Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript xmlhttp请求状态始终返回0_Javascript_Php_Ajax_Header_Http Status Codes - Fatal编程技术网

Javascript xmlhttp请求状态始终返回0

Javascript xmlhttp请求状态始终返回0,javascript,php,ajax,header,http-status-codes,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 &&

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

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

对ajax请求使用类似jQuery的库。它让你免于很多头痛。是的,但我什么也学不到:P@TiMESPLiNTER:不需要库。XHR非常简单。您如何调用该函数?按钮单击、链接、表单提交等?您可以通过将带有当前时间戳的GET参数附加到URL:
URL+'?='+(new Date()).getTime()来防止浏览器缓存。jQuery执行此操作。返回空字符串
window.alert(“就绪状态:+xmlhttpget.readyState+”//状态:+xmlhttpget.status+”状态文本:+xmlhttpget.statusText)发起请求的网站的URL是什么?您正在调用的URL是什么?我们已经确定问题是跨域请求。上面的评论中提到了正确的答案。为什么我会得到反对票?答案是跨域问题,这是一个浏览器安全策略,一些浏览器在statusText中报告“无传输”。我没有投反对票,但最后的评论是+1,我不知道。