我正在使用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,我做了一些自己的研究,但我不知道为什么会失败。
先谢谢你的帮助!!!
编辑:我做了一些调试。我的测试网址=“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');
答案 0 :(得分:1)
好的,所以我对php的了解比我的XDR知识更糟糕。
以下链接有帮助
我必须使用$ HTTP_RAW_POST_DATA而不是$ _POST。
如果有像我这样的其他人偶然发现这个问题,我会留下这个问题。
答案 1 :(得分:1)
这应该适用于php
:
echo file_get_contents('php://input');
将其用作$_POST
:
$_POST=json_decode(file_get_contents('php://input'), true);