我创建了一个 jQuery ajaxTransport 处理程序(对于我拥有的一些测试用例),它应该模拟服务器上的 403 验证错误。
问题是,当我这样做并返回 403 错误时,数据没有返回,不是 json 也不是 responseText。
这是我的代码(简化):(也在 jsfiddle http://jsfiddle.net/znTCL/1/上)
$.ajaxTransport('json',function( options, originalOptions, jqXHR ) {
return {
send: function( headers, completeCallback ) {
completeCallback(403, 'Forbidden', {json : {'Title': 'Title is required.'}});
}
};
});
$(function() {
$.ajax({
url :document.location,
type : 'POST',
data : {Title:''},
dataType : 'json'
}).fail(function(){
console.log(arguments);
});
});
如果我在服务器上返回 403 并且不使用 ajaxtransports,那么一切都按预期工作,失败回调具有 jqXHR 对象,该对象还包含我可以解析为 JSON 的 responseText,然后显示基于该的验证错误. 对于 ajaxtransports,jqXHR 对象没有 reponseText 属性。
如果我在传输中返回 200,则数据按应有的方式出现,并且 responseText 应按应有的方式出现。
我做错了什么还是这是 jQuery ajaxTransports 的限制? </p>