Обработка ошибок jQuery AJAX

Я искал вопросы здесь, но у меня нет хорошего понимания того, как использовать обработку ошибок в AJAX jQuery (im a noob, так что это просто не имеет смысла.)

Может ли кто-нибудь описать это новичкам? В настоящее время я отправляю информацию в скрипт PHP через AJAX, но хочу разрешить jQuery распознавать, являются ли возвращенные данные из сценария ошибкой или успехом.

Благодаря! Дейв

Ошибка возврата из вызова ajax возвращает результаты загрузки страницы, которые не были успешными. Возможно, ваша страница php возвращает действительную страницу, но с результатами, которые вы не хотите. Это связано с возвратом успеха. Надеюсь, следующий снимок кода поможет проиллюстрировать …

$.ajax({ type: "POST", url: "login.php", data: "action=login&user=" + user + "&pass=" + pass, success: function(xhr){ if ((xhr == "Invalid Login") || (xhr == "Invalid charaters in username.") || (xhr == "Missing username or password.") || (xhr == "Unknown Error")) { $("#loginMessageContent").html(xhr); } else { simplemodalClose (dialog); } }, error: function(xhr) { alert ("Oopsie: " + xhr.statusText); } }); 

Обработка ошибок jQuery AJAX реализована для обработки, если HTTP Request имеет ошибку, если ваш скрипт не возвращает «ошибку» или «успех». Если сервер выдает ошибку (404 Not Found или 500 Server Error в качестве примера), то он вызывает функции ошибки jQuery. Его можно обрабатывать несколькими способами, но один хороший способ – показать div, позволяя пользователю знать, что произошла ошибка.

HTML

 <div id="error" style="display: none">There was an error processing your last request</div> 

JQuery

 $(function(){ $("#error").ajaxError(function(){ var $error = $(this); $error.slideDown(500, function(){ window.setTimeout(function(){ $error.slideUp(500); }, 2000); }); }); }); 

Если произошла ошибка, ни один из ваших «успешных» методов не будет срабатывать, и этот div соскользнет вниз, подождите 2 секунды, а затем вернется назад.

Проверка скрипта на наличие ошибок

Поскольку я упомянул, что вы описали, звучит так, как ваш серверный скрипт отправляет «ошибку» или «успех» или что-то подобное обратно клиенту.

Например, если вы используете $.post , ваш код обработки ошибок может выглядеть следующим образом:

 $.post('/your/url', { save_me: true }, function( data ){ if(data == "error"){ // handle error } else { // handle success } } 

Это всего лишь 1 подход. Я создаю приложение, которое возвращает все свои данные в JSON. Если есть ошибка, сообщение JSON изменяется, чтобы отразить это. Каждый возвращаемый объект имеет «статус» либо «успеха», либо «ошибки». Если это ошибка, то есть часть «error_message» JSON, которая описывает ошибку.

Надеюсь, это поможет.

Хотя это не ваша проблема, я отправлю сюда, так как это связано.

С недавней версией JQuery v1.4 ответы JSON теперь проверяются. Это сломало мое приложение, потому что я вернулся:

  {success:true} 

и теперь это должно быть

  {"success":true} // HAS to be double quotes, single won't do it 

Если это неверно, он вызывает обработчик ошибок. Легко исправить, но немного поразмыслил.