1

我正在使用 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');
4

2 回答 2

1

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

下面的链接有帮助

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

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

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

于 2012-10-17T14:10:28.507 回答
1

这应该适用于您php

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

将其用作$_POST

$_POST=json_decode(file_get_contents('php://input'), true);
于 2013-09-13T07:55:23.267 回答