Javascript 为什么此XMLHttpRequest POST甚至无法连接到服务器?
我用POST方法打开了一个XMLHttpRequest,指向一个我知道存在的URL,因为我刚刚对它进行了一次访问。 然而,XHR上的send()调用实际上并没有打开到服务器的任何连接或发送任何数据——我已经用WireShark验证了这一点。 相反,它只是使请求失败,调用onreadystatechange事件处理程序,将状态设置为0(根据规范,这意味着设置了“错误标志”) 但是。。。我没有办法检查出了什么问题。我在FireBug中尝试过,头部和身体看起来都不错;没有响应正文或响应标题。控制台输出中的行是POST/url(x),其中(x)是一个带有x的红色圆圈。任何地方都看不到错误原因。同一行根本不在网络面板中。这可能是个线索,但我不知道是什么Javascript 为什么此XMLHttpRequest POST甚至无法连接到服务器?,javascript,ajax,firebug,xmlhttprequest,Javascript,Ajax,Firebug,Xmlhttprequest,我用POST方法打开了一个XMLHttpRequest,指向一个我知道存在的URL,因为我刚刚对它进行了一次访问。 然而,XHR上的send()调用实际上并没有打开到服务器的任何连接或发送任何数据——我已经用WireShark验证了这一点。 相反,它只是使请求失败,调用onreadystatechange事件处理程序,将状态设置为0(根据规范,这意味着设置了“错误标志”) 但是。。。我没有办法检查出了什么问题。我在FireBug中尝试过,头部和身体看起来都不错;没有响应正文或响应标题。控制台输出
function save_edits(url, txt, cb)
{
var xhr = new XMLHttpRequest();
console.log("'POST' " + url);
xhr.open('POST', url, true);
xhr.onreadystatechange = function(ev)
{
if (xhr.readyState == 4)
{
console.log('post complete status:' + xhr.status);
cb();
}
}
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var text = "&" + edit_what + "=" + escape(txt.replace(/\r/g, '\n'));
try
{
xhr.send(text);
}
catch (e)
{
console.log('send() error: ' + e.toString());
}
这将在FireBug控制台中输出:
同样,这不是服务器端的问题,因为请求甚至没有发送到网络上,我不知道如何找出原因。是您域上的URL还是其他域上的URL?如果它是一个替代域,您很可能由于跨域安全问题而被阻止。谢谢大家的建议!事实证明,这是一个更高层次的问题 调用save函数的代码随后立即调用window.location.reload()以查看新数据,结果取消了未完成的POST请求
真不敢相信我必须通过WireShark和堆栈溢出才能看到这个问题…为什么不使用jquery处理ajax请求?它更干净,我不想在这里使用jQuery,因为我不想。我用它做很多其他的事情,我也有类似的问题。DevTools控制台确认加载的POST请求。我通过
$\u SESSION
存储调试消息,以便以后打印,我实际看到的是json\u encode($\u POST)
是[]
。我正在做xmlReq.send(“query=k”)代码>打开请求并设置标题后。有什么想法吗?它在同一个域上——正如你从日志中看到的,而且,从URL与我刚才成功访问的URL相同的事实来看(正如我在问题中所说的)。