我有一个在 Chrome、FF 和 Safari 上运行良好的 ajax 调用,但在 IE 上总是失败(“成功但没有数据”)。我检查了服务器日志并且总是触发正确的响应,但 IE 仍然显示空响应并且没有捕获正确的 302 http 状态代码。我尝试了很多组合,发现当使用 contentType: "text/html; charset=utf-8" IE 确实得到了响应,但问题是 $_POST 数组是空的,因为发送 POST 应该是 contentType: "application/x -www-form-urlencoded;字符集=utf-8"
这是我的 JavaScript:
function someFunc() {
$.ajax({
cache: false,
async: false,
type: 'POST',
dataType: 'html',
contentType: "application/x-www-form-urlencoded; charset=utf-8",
//contentType: "text/html; charset=utf-8",
url: myProtocol + myHost + "/mypage.php",
data: {action: "someAction"},
success: function( data ) {
if (data == ""){
alert("success but no data");
return;
}
// do something...
return;
},
error: function( data ) {
if (data.status == "302"){
// do something...
return;
} else {
// do something...
return;
}
}
});
return;
}
这是我的 PHP 响应(mypage.php):
$loginUrl = "someUrl";
header("HTTP/1.1 302 Found");
header("Content-Type: text/html; charset=utf-8");
Header("Content-Length: " . mb_strlen($loginUrl, "8bit"));
header("Connection: close", true);
echo $loginUrl;
只有在 IE 7-9 上,我才能在其他浏览器上完美运行“成功但没有数据”。任何想法?有人?
谢谢!