サーバーで403検証エラーをシミュレートすることになっているjQueryajaxTransportハンドラー(私が持っているいくつかのテストケース用)を作成しました。
問題は、これを実行して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を使用しない場合、すべてが期待どおりに機能します。失敗したコールバックには、JSONとして解析してそれに基づいて検証エラーを表示できるresponseTextも含むjqXHRオブジェクトが含まれます。 。ajaxtransportsでは、jqXHRオブジェクトにreponseTextプロパティがありません。
トランスポートで200を返すと、データは適切に送信され、responseTextは適切に送信されます。
私は何か間違ったことをしていますか、それともこれはjQuery ajaxTransportsの制限ですか? </ p>