2016-03-05 48 views
1

在我自己的项目上工作。我发送一个XMLHttpRequest到本地主机从Firefox 44到XAMPP。我的状态为0,状态为1.下面是有问题的代码。XHR状态0,本地主机上的readystate 1

function sendReq(php,segment){ 
    alert("sendreq called "); 
    //we out here getting 0 statuses. check out cwd, check out what php value is, 
    xhr.open("POST", php, true); 
    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); 
    xhr.onreadystatechange = getData(segment); 
    xhr.send(); 
} 

//callback function for ajax request. 
function getData(div){ 
    if ((xhr.readyState == 4) && (xhr.status == 200)) 
    { 
     var serverResponse = xhr.responseText; 
     div.innerHTML = serverResponse; 
    }else{ 
     div.innerHTML = "<p>loading!</p> ready state: " + xhr.readyState +"</br> status: "+ xhr.status; 
    } 
} 

我读过别处RS:1/S:0 XHR属性指示不成功跨域请求,但这是所有存在的在本地主机上,与所述文件都在同一个目录中,和检查时在Firebug中的XHR响应,返回文本在那里。

我已经建立了一个登录到这个页面几乎相同的代码,它的工作原理,它只能指向一个不同的.php文件。比较两者和谷歌搜索并没有启发我。所以任何建议都是值得欢迎谢谢!

回答

0

您正在执行getData()函数一次,在页面加载中,并将undefined返回到onreadystatechange处理程序,因为这会在添加括号时发生。

它必须要么

xhr.onreadystatechange = getData; 

注意缺少括号,或者如果你有来传递参数

onreadystatechange = function() { 
    getData(segment); 
} 
+0

哇,这是忽略了一个令人沮丧的事情。我不知道包含()会调用该函数。我可悲的是没有受过教育或者是什么。 感谢您的帮助。 – spkvn

相关问题