XHR状态0,localhost上的readystate 1

时间:2016-03-05 12:54:56

标签: javascript php ajax web

处理我自己的项目。我将一个XMLHttpRequest从Firefox 44发送到localhost到XAMPP。我收到的状态为0,状态为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属性表示不成功的跨域请求,但这都发生在localhost上,文件全部在同一目录中,并在检查XHR响应时在Firebug中,返回文本就在那里。

我已经为这个页面构建了一个几乎完全相同的代码并且它可以工作,它只指向一个不同的.php文件。比较两者和谷歌搜索并没有启发我。所以欢迎任何建议。谢谢!

1 个答案:

答案 0 :(得分:1)

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

必须是

xhr.onreadystatechange = getData;

请注意缺少括号,或者如果必须传递参数

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