Подтвердить что ты не робот

JQuery ajax call возвращает пустую ошибку, если содержимое пуста

Я вызываю функцию getResult() каждый раз, когда res.reply = 2, но бывают случаи, когда res пуст. Когда возвращаемое значение пуст, вызывается console.log("error"). Это работает в более ранних версиях jQuery Mobile. Теперь версия 1.3.2.

function getResult()
{
    request = $.ajax({
        type: "POST",
        url: url,
        dataType: "json",
        data: {
            ....
        },
        error: function() {         
            console.log("error");
        },
        success: function(res) {
            if(res.reply=='2') {
                getResult();
            }         
        }
    });
}
4b9b3361

Ответ 1

dataType: "json"

означает: дайте мне json, ничего больше. пустая строка не json, поэтому получение пустой строки означает, что она не была успешной...

request = $.ajax({
    type: "POST",
    url: url,
    data: {
        ....
    },
    error: function() {         
        console.log("error");
    },
    success: function(res) {
        var response = jQuery.parseJSON(res);
        if(typeof response == 'object'){
            if(response.reply == '2') {
                getResult();
            }  
        } else {
              //response is empty 
        }
    }
});

Ответ 2

Похоже, что обычно вам нужен ответ JSON, поэтому я бы не изменил ваш тип данных на "текст", вместо этого я бы получил сервер, чтобы вернуть действительный ответ JSON, даже когда ответ пуст, например. "{}" вместо "".