如果我没有向以下帖子返回任何内容,则会收到 AJAX 解析错误:
$.post('user.php', {id: 'job'}, function(data) {
console.log(data.length);
},'json');
我该如何避免呢?我想避免服务器给出任何空答案(例如“0”)以限制带宽消耗(移动应用程序)。
谢谢
最佳答案
如果您想避免空 JSON 响应的解析错误:
var options = {
url: 'http://mysite.com/page',
converters: { "text json": function (json_string) {
if ( typeof json_string != 'string' || !$.trim(json_string).length ) {
return {};
} else {
return jQuery.parseJSON( json_string );
}
}
}
};
$.ajax(options);
注意:此解决方案需要 jQuery 1.5(请参阅 http://api.jquery.com/extending-ajax/#Converters )。
如果您希望将转换器用于每个 json 请求,您也可以将其移至 $.ajaxSetup()。
我发现这很有用,因为 Rails 3 无论如何都会返回空的 JSON 响应以及 HTTP 200 来表示成功的模型删除等 - 因此让 jQuery 将其视为失败并不酷。
关于jquery - 如何在 $.post 回调中解析空 JSON 对象而不出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9851257/