JQuery AJAX обработки 204 Нет содержимого
Я пишу JQuery ajax
вызов сервера RESTful, для которого ответом на действительный запрос PUT является HTTP 204 No Content. Ответ имеет Content Type
заголовок application/text
но нет содержимого тела. Из-за этого, кажется, что ajax
называть угрозы это ошибкой, и поэтому error
функция вызывается вместо done
,
Есть ли способ переопределить это поведение и выполнить done
для ответа 204 независимо от содержимого тела?
1 ответ
Мне, наконец, удалось решить проблему, добавив фильтр в настройки запроса ajax
dataFilter: function(data,type) {
return data || "{}"
}
Это гарантирует, что JSON.parse
никогда не получает пустое содержимое, когда оно вызывается в ajax для содержимого ответа.
Лучший способ - позвонить statusCode
в ajax
. И сделайте код бегуна в конкретномstatusCode
.
new Promise((resolve, reject) => {
var settings = {
"URL": "<your link>",
"method": "POST",
"timeout": 0,
"headers": {
"Content-Type": "application/json"
},
"data": JSON.stringify({
"email": email,
"user_name": user_name,
}),
"statusCode": {
200: function (data) {
console.log("Request completed 200");
resolve(data || {statusCode: 200});
},
201: function (data) {
console.log("Request completed 201");
resolve(data || {statusCode: 201});
},
204: function (data) {
console.log("Request completed 204");
resolve(data || { statusCode: 204});
}
}
};
$.ajax(settings)
});