2014-11-20 3 views
0

Я использую стандартный шаблон $.post(url,function(d){ alert(d.msg); },'JSON'); для получения ответа от сервера, сервер отправляет ответ как text/html, но обычно является форматированной json-строкой, поэтому этот код работает хорошо, но есть вероятность, что сервер может отправить неверный код json string или plain text или html, как я могу изменить код для ответа на эту ситуацию?

+0

получить repsonse как текст, а затем преобразовать его в формат JSON. если конверсия не была успешной, на стороне клиента, тогда сделайте что-нибудь, если это так, а затем выполните другую вещь. – vaso123

ответ

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); 
}); 

DEMO