Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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 为什么此XMLHttpRequest POST甚至无法连接到服务器?_Javascript_Ajax_Firebug_Xmlhttprequest - Fatal编程技术网

Javascript 为什么此XMLHttpRequest POST甚至无法连接到服务器?

Javascript 为什么此XMLHttpRequest POST甚至无法连接到服务器?,javascript,ajax,firebug,xmlhttprequest,Javascript,Ajax,Firebug,Xmlhttprequest,我用POST方法打开了一个XMLHttpRequest,指向一个我知道存在的URL,因为我刚刚对它进行了一次访问。 然而,XHR上的send()调用实际上并没有打开到服务器的任何连接或发送任何数据——我已经用WireShark验证了这一点。 相反,它只是使请求失败,调用onreadystatechange事件处理程序,将状态设置为0(根据规范,这意味着设置了“错误标志”) 但是。。。我没有办法检查出了什么问题。我在FireBug中尝试过,头部和身体看起来都不错;没有响应正文或响应标题。控制台输出

我用POST方法打开了一个XMLHttpRequest,指向一个我知道存在的URL,因为我刚刚对它进行了一次访问。 然而,XHR上的send()调用实际上并没有打开到服务器的任何连接或发送任何数据——我已经用WireShark验证了这一点。 相反,它只是使请求失败,调用onreadystatechange事件处理程序,将状态设置为0(根据规范,这意味着设置了“错误标志”)

但是。。。我没有办法检查出了什么问题。我在FireBug中尝试过,头部和身体看起来都不错;没有响应正文或响应标题。控制台输出中的行是POST/url(x),其中(x)是一个带有x的红色圆圈。任何地方都看不到错误原因。同一行根本不在网络面板中。这可能是个线索,但我不知道是什么

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控制台中输出:

  • “职位”
  • POST source.js(第70行)
  • 发布完成状态:0
  • 第1行)是我的控制台日志语句

    第2)行是POST XHR请求,红色,圆圈-X表示失败

    第3行)是onreadystatechange处理程序中的控制台日志语句

    没有出现异常(我将该检查放在那里只是出于偏执)——即使我使open()是同步的而不是异步的


    同样,这不是服务器端的问题,因为请求甚至没有发送到网络上,我不知道如何找出原因。

    是您域上的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相同的事实来看(正如我在问题中所说的)。