以下代码运行正常,但唯一的问题是没有给我textStatus
。我需要做什么才能获得textStatus
?
var url = "http://host/MyServiceImpl.svc/GetCount?method=?";
$.ajax({
dataType: 'jsonp',
data: { Id: '1' },
jsonp: 'jsonp_callback',
url: url,
success: function (json, textStatus) {
alert(json.d);
alert(textStatus);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
debugger
}
});
或
$.getJSON(url, { Id: '1'},
function (data, textStatus) {
alert(textStatus);
});
答案 0 :(得分:1)
JsonP的工作原理是将标记写入文档,目标Url作为源。然后服务器在函数调用中将响应包装起来。
somecallback( your data )
这样做的缺点是没有使用XMLHttpRequest,因此jsonP没有“真正的”错误检测。所以基本上它不起作用,因为jsonP本身就是一个黑客。
这就是说有一个简单的解决方法,涵盖了大多数需要发出故障信号的情况。让返回的json具有.Success属性,可能还有.ErrorMessage。我通常使用这种结构的对象:
{ Success: true|false, ErrorMessage: "", Data:json}
当然,404或者500的问题仍然会导致问题,但关键是要在服务jsonP时尽量避免使用。