我有以下代码
$.ajax({ type: 'POST',
url: 'index.jsp',
data: 'id=111',
dataType: 'jsonp',
success: function(data) {
alert(data.result);
},
error: function( err1, err2, err3 )
{
alert('Error:' + err3 )
}
});
我将返回响应作为使用json参数生成的回调参数。像这样
jQuery16105097715278461496_1314674056493({"result" : "success"})
这在FF中绝对正常。在IE 9中,它转到错误功能并显示
"Error: jQuery16105097715278461496_1314674056493 was not called" .
当我看到F12时。我看到一个警告说。
SEC7112: Script from http://otherdomain.com
index.jsp?callback=jQuery16105097715278461496_1314674056493
&eid=111&_=1314674056493
was blocked due to mime type mismatch
答案 0 :(得分:1)
尝试添加contentType
$.ajax({
type: 'POST',
url: 'index.jsp',
data: {id:'111'},
contentType: "application/json; charset=utf-8",
dataType: 'jsonp',
success: function(data) {
alert(data.result);
},
error: function( err1, err2, err3 )
{
alert('Error:' + err3.status );
alert(err1.responseText);
}
});
这是一篇好文章http://msdn.microsoft.com/en-us/library/gg622941%28v=vs.85%29.aspx
答案 1 :(得分:0)
这个图书馆天生有帮助我在浪费了很多时间后发现它。
使用此库https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest,您就不需要使用jsonp。
您的跨站点请求将开始正常运行。