Я использую стандартный шаблон $.post(url,function(d){ alert(d.msg); },'JSON');
для получения ответа от сервера, сервер отправляет ответ как text/html, но обычно является форматированной json-строкой, поэтому этот код работает хорошо, но есть вероятность, что сервер может отправить неверный код json string или plain text или html, как я могу изменить код для ответа на эту ситуацию?
0
A
ответ
1
Попробуйте проверить тип содержимого
$.ajax({
type: "POST",
url: "your url goes here",
data: "data to be sent",
success: function(response, status, xhr){
var ct = xhr.getResponseHeader("content-type") || "";
if (ct.indexOf('html') > -1) {
//do something
}
if (ct.indexOf('json') > -1) {
// handle json here
}
}
});
1
Просто добавьте обработчик ошибок.
Поскольку вы определили dataType как 'json'
, если возвращенные данные недействительны json, jquery вызовет обратный вызов ошибки. Он также будет срабатывать для других ошибок, возможно АЯКС, а поэтому вы должны всегда использовать обработчик ошибок в любом случае
$.post(url,function(d){
alert(d.msg);
},'json').error(function(xhr, errorThrown){
alert('Error thrown = ' + errorThrown);
});
получить repsonse как текст, а затем преобразовать его в формат JSON. если конверсия не была успешной, на стороне клиента, тогда сделайте что-нибудь, если это так, а затем выполните другую вещь. – vaso123