Как получить ошибку 406 (неприемлемо) в jquery
Я выполняю обработку ошибок в my.js, где у меня есть перекрестный вызов домена на другой сервер, также для динамического HTML-шаблона я использую Mustache.js.
$.getJSON(url, function(data, textStatus, xhr) {
$.each(data, function(i, data) {
introPage(data);
});
}).fail(function(Error) {
alert(Error.status);
});
function introPage(data )
{
$.getJSON('myphp.php?jsoncallback=?&template='+testTemplate, function(msg) {
// my operations
}).error(function(data) {
});
}
У нас есть .fail() в getJSON, чтобы уловить ошибки в getJSON. Я могу уловить ошибку 404 (не найден), но когда дело доходит до ошибки 406 (недопустимый или недействительный ввод) или ошибка 401 (несанкционированный доступ),.fail(), похоже, не работает
но выдает ошибку в консоли
![JSON ERROR IN CONSOLE]()
Также, когда я нажимаю ссылку. он показывает ошибку в обратном вызове jquery в следующем формате
jQuery191014790988666936755_1378113963780({
"error": {
"code": 406,
"message": "Not Acceptable: Sorry, There are no results to display for the given input."
}
});
Теперь мне интересно, как получить эту ошибку в моем JS. я не получаю код ошибки 406 и 401. Мне нужен этот код ошибки, чтобы отображалась соответствующая страница ошибки.
Спасибо
Ответы
Ответ 1
Судя по параметру jsoncallback=?
и ответом jQuery191...780({...})
, похоже, что jQuery генерирует запрос JSONP. Запросы JSONP не подпадают под одни и те же ограничения политики происхождения, но они имеют следующее ограничение как описано здесь:
Примечание. Этот обработчик [error] не вызывается для междоменного script и междоменные запросы JSONP.
Решение:
- Создайте чистый запрос JSON, если сервер разрешает междоменные запросы
- Посмотрите на ответы на эти вопросы:
- Использовать jquery-jsonp - он не дает вам код ошибки HTTP