Как отменить запрос ajax (из jquery) на стороне сервера? - PullRequest
0 голосов
/ 15 ноября 2008

Звучит как странный вопрос, но скажите, что у меня есть что-то вроде этого:

$.post( "/myajax.php",
        { "param1": value1, "param2": value2 },
        function( data, status ) {
            if( status == "success" ) {
               $("#someid").html( data );
            }
        }, "html" );

Пока myajax.php делает все, что ему нужно, он решает, что ему не нужно вносить какие-либо изменения в #someid. Если он просто возвращается, элемент someid не отображается, но я хочу оставить его в покое. Как может php-запрос возвращать таким образом, чтобы status != "success"?

Ответы [ 2 ]

4 голосов
/ 15 ноября 2008

вызовы ajax рассматривают любой 200 OK как успех. таким образом, вы можете вернуть что-то еще из вашего PHP-скрипта, чтобы вызвать ошибку в вашем ajax.

здесь - некоторые другие коды состояния на случай, если вы захотите выбрать что-то более подходящее.

edit : я не обязательно не согласен с таким подходом, но я все еще склоняюсь больше к работе с сообщением о состоянии (статус http), а не с телом ответа.

Я думаю, что в почтовой транзакции, как упоминалось выше, вы обновляете ресурс. можно разумно предположить, что вы ожидаете, что одна из двух вещей произойдет две (в условиях «успеха»):

  1. a 200 OK означает, что контент был опубликован без проблем, и в качестве ответа обычно показывается новый контент. метод ajax «обеспечивает» это поведение, позволяя получить тело ответа для обновления вашего пользовательского интерфейса.

  2. в сценарии, где обновление не требуется, 200 OK также подходит (так как запрос был обработан, как и ожидалось), но, возможно, 204 No Content лучше , поскольку это предполагает, что запрос выполнен, но никакое изменение представления не требуется. я склоняюсь к убеждению, что это больше соответствует вызову ajax, так как вы можете игнорировать тело ответа (так как его нет) и работать с состоянием (204 - обновить пользовательский интерфейс, чтобы сказать «никаких изменений не было необходимости» или подобное). )

4 голосов
/ 15 ноября 2008

Не проще ли проверить возвращаемые данные?

$.post( "/myajax.php", { 
        "param1": value1, 
        "param2": value2 
   }, function( data, status ) {
       if( data != "" ) {
           $("#someid").html( data );
       }
   }, 
   "html" 
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...