【问题标题】:IE 8+ XDomainRequest 'post' not workingIE 8+ XDomainRequest 'post' 不工作
【发布时间】:2012-10-16 21:40:11
【问题描述】:

我正在使用 jQuery.XDomainRequest.js (https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest) 来支持 IE 中的 ajax 请求。

它适用于我的 GET 请求,但 POST 不起作用,它返回 500。 (我检查过,它在其他浏览器中也能正常工作,所以它是 XDR 特有的问题)。

我的 ajax 调用如下所示:

var contact = {};
contact.firstName = "ABC"; 

jQuery.ajax({
     type:  'POST',
     url:   contactDetailsUrl,
     data:  contact,
     dataType: 'json',
     success: function(data) {
                callback(true);
              },
     error: function(data) {
                alert('Currently having trouble posting.');
                callback(false);
            }
});

这是我第一次遇到 XDomainRequest,我自己做了一些研究,但我不知道为什么会失败。

提前感谢您的帮助!!!

编辑:我做了一些调试。

我的测试 url = "http:/myserver/test/index.php?key=123" (这是一个跨域请求)

我打印了 json_encode($_GET) ,我得到:{"key":"123"} 我打印了 json_encodee($_POST),我得到:[]。

显然我的帖子数据没有被发送。

这是发送我的数据的行:

xdr.send(postData);

postData 看起来像:

"firstName=ABC"

我在 php 代码中的标题看起来像:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS');
header('Access-Control-Max-Age: 1000');
header('Access-Control-Allow-Headers: Content-Type');

【问题讨论】:

    标签: php ajax internet-explorer post xdomainrequest


    【解决方案1】:

    好吧,所以我的 php 知识比我的 XDR 知识差。

    下面的链接有帮助

    http://social.msdn.microsoft.com/Forums/eu/iewebdevelopment/thread/fe1570a0-8670-450d-90e6-1e03bd338569

    我必须使用 $HTTP_RAW_POST_DATA 而不是 $_POST。

    我会留下这个问题,以防万一有像我这样的人偶然发现这个问题。

    【讨论】:

    • XDR 只能发送文本/纯文本,这就是为什么...问题又出在 msie 上,而不是您的 php 知识...
    • 这个对我帮助很大!谢谢
    【解决方案2】:

    这在php 中应该对你有用:

    echo file_get_contents('php://input');
    

    将其用作$_POST

    $_POST=json_decode(file_get_contents('php://input'), true);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-25
      • 2012-01-10
      • 2013-02-14
      • 2013-02-16
      • 2011-12-24
      • 2013-09-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多