Полный отзыв AJAX - PullRequest
       20

Полный отзыв AJAX

3 голосов
/ 17 декабря 2008

Я создаю приложение JQuery / JS / PHP / mySQL с управлением записями в БД, и мне необходимо обеспечить надежную и полную обратную связь с пользователем по вызовам AJAX, изменяя записи в БД. ИМХО проблема в том, что функции $.ajax success: и error: указывают только на успех транспортного уровня AJAX, а не на весь процесс. Что если сбой модификации БД? Как предоставить полный отзыв пользователю?

Я закончил с

$.ajax({
   url: "/action/delete",
   data: "rowid="+rowid,
   complete: function(xmlHttp) {
   if ( xmlHttp.responseText ) alert('Success - back end returned "success"');
      else alert('failure - back end returned NULL')
   }
});  

и ответ PHP:

$success = deleteRecord( $_GET(rowid) );

if($success) { 
   print 'success';
} else {
   print NULL; 
}
exit();

Идея проста - если мне удастся получить положительный отзыв от серверной части, тогда вся операция будет выполнена успешно, если нет - пользователю все равно, где возникла проблема.

Заранее спасибо, ваши отзывы очень ценятся.

Ответы [ 3 ]

3 голосов
/ 17 декабря 2008

Если вы отвечаете на запрос некоторыми данными json вместо просто нового html-кода для вставки в DOM, вы можете разместить любые типы кодов ошибок и сообщений, которые вам нравятся, вместе с данными. Например, если ваш ответ был что-то вроде ...

{ 
    errorstate: 0,
    errormsg: "All systems are go",
    displaytext: "stuff I want to display when all goes well"
}

Ваш код javascript может проверять эти данные и делать все, что ему нужно. Это также позволяет вам добавить больше обработки ошибок в ваш серверный скрипт, который часто может быть проще.

Попробуйте http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

2 голосов
/ 17 декабря 2008

Одним из возможных решений было бы использование HTTP-кода ответа для оповещения об ошибке, например, 200 OK, все в порядке, и 500 Internal Server Error on error, которую можно просто проверить при достижении состояния 4.

В PHP я считаю, что это делается через заголовок («HTTP / 1.0 200 Ok») перед отправкой любых других данных. Если вы боитесь, что данные будут отправлены по ошибке, прежде чем вы сможете оценить правильный заголовок для установки, вы можете включить буферизацию вывода.

Как вы хотите представить данные, конечно, зависит от вас, вы можете, например, на 500 просто иметь document.getElementById ("myerrorbox"). InnerHTML = xmlHttp.responseText или аналогичный, и визуализировать частичный HTML-документ в вашей php-программе.

0 голосов
/ 17 декабря 2008

Я отправляю сообщения о состоянии обратно клиенту. Вместе с флагом ошибки. А затем мой код JavaScript отображает сообщение, полученное с сервера, и окрашивает сообщение в соответствии с флагом ошибки. Я считаю, что это довольно эффективно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...