我使用标准模式$.post(url,function(d){ alert(d.msg); },'JSON');
来接收来自服务器的响应,服务器将响应发送为text / html但通常是格式化的json字符串,因此这段代码运行良好,但有可能服务器可能会发送格式错误的json字符串或纯文本或html,如何修改代码以响应这种情况呢?
答案 0 :(得分:1)
尝试检查内容类型
$.ajax({
type: "POST",
url: "your url goes here",
data: "data to be sent",
success: function(response, status, xhr){
var ct = xhr.getResponseHeader("content-type") || "";
if (ct.indexOf('html') > -1) {
//do something
}
if (ct.indexOf('json') > -1) {
// handle json here
}
}
});
答案 1 :(得分:1)
只需添加错误处理程序。
由于您已将dataType定义为'json'
,如果返回的数据是无效的json,则jquery将触发错误回调。
它也会被触发其他可能的ajax错误,所以你应该总是使用错误处理程序
$.post(url,function(d){
alert(d.msg);
},'json').error(function(xhr, errorThrown){
alert('Error thrown = ' + errorThrown);
});
的 DEMO 强>