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)
});
Другие вопросы по тегам