【问题标题】:XMLHttpRequest doesn't send request body in Firefox or ChromeXMLHttpRequest 不在 Firefox 或 Chrome 中发送请求正文
【发布时间】:2011-09-25 17:15:37
【问题描述】:

我正在使用 XMLHttpRequest POST 来调用 SOAP 服务。当我关闭缓存时,http 请求在 IE 中运行良好。我可以调用一个函数并获取正确的肥皂响应 xml。但是,当我在 Firefox 或 Chrome 中运行它时,http 请求对象似乎没有任何正文内容。这是我的代码:

   var xmlhttp = null;
   if(window.XMLHttpRequest) {
    alert("supports XMLHttpRequest");
    xmlhttp = new XMLHttpRequest();
  } else {
    // Internet Explorer
    try
    {
      xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e)
    {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
        xmlhttp.open("POST", "http://www.zazzycard.com:22080/eBizCard/ws/eBizCardService", true);
        xmlhttp.onreadystatechange = function() {
         if (xmlhttp.readyState == 4) {
          alert(xmlhttp.responseText);
          alert(xmlhttp.responseXML);
         }
        }
        xmlhttp.setRequestHeader("SOAPAction", "http://ws.ebizcard.com/AuthenticateUser");
        xmlhttp.setRequestHeader("Content-Type", "text/xml");
        xmlhttp.setRequestHeader("Content-Length", 1000);
        xmlhttp.setRequestHeader("Cache-Control", "max-age=0");
        xmlhttp.send(xml);

有谁知道为什么这在 Firefox 中不起作用?谢谢!

【问题讨论】:

  • 您没有在代码中的任何位置定义 xml 变量,因为您在 xmlhttp.send(xml) 中使用过它
  • 谢谢大家。我想通了为什么 Firefox 没有发送 POST 数据。由于跨站点调用,firefox 实际上通过首先向服务器发送一个 OPTIONS 请求来请求许可来预先发送我的请求。我的服务器没有处理这个 OPTIONS 请求并且崩溃了。我不得不删除 setRequestHeader() 调用以避免飞行前请求。但是,即使服务现在可以正确处理 POST 请求,我收到的响应也是空/null。在这一点上,我感到非常困惑和沮丧。

标签: internet-explorer firefox xmlhttprequest


【解决方案1】:

我知道这是陈词滥调,但您可能真的想使用 jQuery,以避免所有 if (window.XMLHttpRequest) ... 的东西。

【讨论】:

  • 谢谢大家。我想通了为什么 Firefox 没有发送 POST 数据。由于跨站点调用,firefox 实际上通过首先向服务器发送一个 OPTIONS 请求来请求许可来预先发送我的请求。我的服务器没有处理这个 OPTIONS 请求并且崩溃了。我不得不删除 setRequestHeader() 调用以避免飞行前请求。但是,即使服务现在可以正确处理 POST 请求,我收到的响应也是空/null。在这一点上,我感到非常困惑和沮丧。
  • @Kang,您应该将修改后的代码发布为答案,然后将其标记为已接受,以便此问题可以更好地帮助遇到同样问题的其他人。跨度>
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 2019-05-15
  • 2014-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-03
相关资源
最近更新 更多