Javascript xmlhttp请求状态始终返回0
我有一个函数,它使用普通的旧JS获取请求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 &&
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,我不知道。