Используйте вызов нижнего уровня $.ajax
, чтобы полностью контролировать запрос.В идеале, вместо отправки успешного ответа 2xx, отправьте ответ об ошибке, который будет автоматически отправлен на ваш обратный вызов ошибки.
$.ajax({
url: '..',
success: function() {
// if it gets here, then assume credits were used
},
error: function() {
// some error happened
// if error was about insufficient funds, then redirect
}
});
С сервера отправьте успешный ответ, как вы делаете сейчас.Однако для ошибок измените заголовок ответа и отправьте объект JSON или простой текст, указывающий, в чем заключалась ошибка.И есть заголовок именно для того, что вы ищете.Это 402 - Payment Required
:)
header('HTTP/1.1 402 Payment Required');
отправить объект JSON в качестве ответа с более подробной информацией:
{
status: 'error',
reason: 'Insufficient Funds',
balance: '$2.78',
amountRequested: '$3.50'
}
Для обновленного комментария необходимо использоватьзамыкание (лучше, чем глобальные переменные :) Предположим, что внешняя функция получает имя / идентификатор элемента и переносит это значение через замыкание в обратном вызове успеха.Пожалуйста, дайте мне знать, если это не то, что вы хотели.
function makeAJAXCall(elementName) {
$.ajax({
success: function(...) {
// elementName is available here through a closure
alert(elementName);
}
});
}