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();
}
}
});
}
Ответы
Ответ 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, даже когда ответ пуст, например. "{}" вместо "".