jquery ajax仅在IE上没有返回数据
我有一个ajax调用,它在Chrome、FF和Safari上运行良好,但在IE上总是失败(“成功但没有数据”)。 我检查了服务器日志,正确的响应总是会触发,但IE仍然显示空响应,并且没有捕获正确的302HTTP状态代码。 我尝试了许多组合,发现在使用contentType时:“text/html;charset=utf-8”IE确实会得到响应,但问题是$\u POST数组是空的,因为发送POST应该是contentType:“application/x-www-form-urlencoded;charset=utf-8” 这是我的javascript: 这是我的PHP响应(mypage.PHP): 只有在IE7-9上,我才能在其他浏览器上获得“成功但没有数据”的效果。 有什么想法吗?谁jquery ajax仅在IE上没有返回数据,jquery,ajax,internet-explorer,Jquery,Ajax,Internet Explorer,我有一个ajax调用,它在Chrome、FF和Safari上运行良好,但在IE上总是失败(“成功但没有数据”)。 我检查了服务器日志,正确的响应总是会触发,但IE仍然显示空响应,并且没有捕获正确的302HTTP状态代码。 我尝试了许多组合,发现在使用contentType时:“text/html;charset=utf-8”IE确实会得到响应,但问题是$\u POST数组是空的,因为发送POST应该是contentType:“application/x-www-form-urlencoded;c
谢谢 是否发送位置标题 标题(“位置:”,$loginUrl)
看看14.30位置:问题在于IE试图遵循重定向位置,这不是我在JS中想要做的。 我所做的解决方法是将响应更改为200OK,让JS检测URL是否响应,然后对其进行处理:
不,我不知道,但是当将其更改为状态200时,确定相同的结果:无数据成功。myProtocol和myHost与客户端相同吗?是的,请注意,我在服务器端看到了请求,并且在服务器日志中看到了相应的响应。还请注意,这不是跨域请求!在complete:function(data){console.log(data);}中发生了什么?也尝试了,没有得到相同的结果。回答如下:
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;
}
$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;
success: function( data ) {
if (data.match('http://') || data.match('https://')){
window.parent.location = data;
return;
} else {
var url = (window.location != window.parent.location) ? document.referrer: document.location;
window.parent.location = url;
return;
}
}