如何在使用jquery $ .post时处理非json响应?

时间:2014-11-20 12:53:34

标签: jquery json

我使用标准模式$.post(url,function(d){ alert(d.msg); },'JSON');来接收来自服务器的响应,服务器将响应发送为text / html但通常是格式化的json字符串,因此这段代码运行良好,但有可能服务器可能会发送格式错误的json字符串或纯文本或html,如何修改代码以响应这种情况呢?

2 个答案:

答案 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