【问题标题】:Why does this XMLHttpRequest POST fail to even connect to the server?为什么这个 XMLHttpRequest POST 甚至无法连接到服务器?
【发布时间】:2011-03-24 04:54:31
【问题描述】:

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

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

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

  1. 'POST'http://mydomain.com/srv.json.section-xna.latest
  2. POST http://mydomain.com/srv.json.section-xna.latestsource.js(第 70 行)
  3. 发布完成状态:0

第 1 行)是我的控制台日志语句。

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

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

没有引发异常(我将检查放在那里只是为了偏执)——即使我让 open() 是同步的而不是异步的。

再次强调,这不是服务器端问题,因为请求甚至没有发送到网络上,我不知道如何弄清楚为什么会这样。

【问题讨论】:

  • 为什么不使用 jquery 来处理 ajax 请求?它更干净整洁
  • 我没有在这里使用 jQuery,因为我不想。我将它用于许多其他事情。
  • 我也有类似的问题。 DevTools 控制台确认已加载 POST 请求。我通过$_SESSION 存储调试消息,以便稍后打印它们,而我实际看到的是json_encode($_POST)[]。打开请求并设置标题后,我正在做xmlReq.send("query=k");。有什么想法吗?

标签: javascript ajax firebug xmlhttprequest


【解决方案1】:

该 URL 是在您的域上还是在备用域上?如果它是备用域,则很可能由于跨域安全问题而被阻止。

【讨论】:

  • 它在同一个域上——正如你从日志中看到的那样,而且,从 URL 与我刚刚成功 GET 到的 URL 相同的事实(正如我在问题)。
【解决方案2】:

谢谢大家的建议!原来是更高层次的问题。

调用保存函数的代码随后立即调用 window.location.reload() 以查看新数据,这最终取消了未完成的 POST 请求。

不敢相信我必须通过 WireShark 和 Stack Overflow 才能看到这个问题......

【讨论】:

    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 2011-10-11
    • 2014-05-04
    • 2013-02-12
    • 2015-10-17
    • 2022-01-13
    相关资源
    最近更新 更多