私はRESTDELETE呼び出しを行っています。これは204を返します。jQuery1.8.3では、これは機能し、request.doneコールバックをヒットします。しかし、1.9を使用すると、textStatusにパーサーエラーがあり、errorThrownに「SyntaxError:Unexpectedendofinput」が含まれるrequest.failになります。
remove = function (complete) {
var self = this;
var request = $.ajax({
context: self,
url: "/v1/item/" + itemId,
dataType: "json",
type: "DELETE"
});
request.done(removeCallback);
request.fail(function (xhr, textStatus, errorThrown) {
alert(errorThrown);
});
},
1.9でこれが失敗する原因となる変更点と、それを修正するために何を変更する必要があるかを知っている人はいますか?
だから、私自身の質問に答えると、これが実際に問題であるように見えます:
空の文字列のJSON結果を返すjQuery.ajax
1.9より前では、JSONまたはJSONPの戻りデータ型を期待するajax呼び出しは、空の文字列の戻り値を成功の場合と見なしますが、成功ハンドラーまたはpromiseにnullを返します。1.9以降、JSONデータに対して返される空の文字列は不正な形式のJSONと見なされます(そうであるため)。これでエラーがスローされます。エラーハンドラを使用して、このようなケースをキャッチします。
したがって、dataTypeを削除すると
dataType: "json",
jQuery1.8.3および1.9で動作します。