AJAX / JQuery success: / error: манипулирование функциями - PullRequest
4 голосов
/ 21 марта 2011

Возникли проблемы с AJAX / JQuery. Вот контекст моей проблемы, сопровождаемый примером кода:

Я пытаюсь вызвать PHP-скрипт getInfo.php и проверить, содержатся ли какие-либо данные в базе данных. Я могу писать запросы достаточно легко, но с точки зрения приведенного ниже примера кода, как я могу «сообщить» функции успеха об ошибке, если она не может найти данные в базе данных и вместо этого запустить функцию ошибки?

$(document).ready(function(){
        getInfo();
        function getInfo(){
            $.ajax({
                type: "GET",
                url: "getInfo.php",
                data: "do=getInfo",
                cache: false,
                async: false,
                success: function(result) {
                    $("#myInfo").remove();
                    alert("Data found");
                },
                error: function(result) {
                    alert("Data not found");
                }
            });
        }
});

Любой совет будет принята с благодарностью. =)

Ответы [ 4 ]

5 голосов
/ 21 марта 2011

Обработчик ошибок используется для обработки ошибок в вашем вызове AJAX.

Вы можете повторить 1 в вашем скрипте PHP, если данные были найдены, и 0, если они не были найдены. Тогда вы можете использовать оператор if, чтобы определить, что делать. Например:

success: function(result)
{
    if(result == 1)
    {                    
        $("#myInfo").remove();
        alert("Data found");
    }
    else
    {
        alert("Data not found");
    }
},
3 голосов
/ 21 марта 2011

«success» вызывается, когда возвращаемый код равен «200» (успешный запрос).«error» вызывается всякий раз, когда возвращается другой код (например, 404, 500).

Так что я думаю, что вы можете сделать 2 вещи:

  • Пусть PHP возвращает 404, поэтому функция ошибкивызывается
  • Пусть ваш getinfo.php возвращает логическое значение (обычно мой подход)

    {"success": true, ...}

2 голосов
/ 21 марта 2011

Функция 'error', которую вы используете, предназначена для идентификации и обработки ошибки AJAX, а не ошибки скрипта. Если скрипт, который вы вызываете, найден и выполняется без неожиданного завершения (т. Е. С ошибками!), То он считается успешным.

Лучше всего, чтобы ваш скрипт getInfo.php возвращал то, что вы можете использовать в функции успеха; например, количество строк в вашем наборе результатов или что-то еще - тогда вы можете проверить в success (), есть ли у вас данные и код соответственно.

0 голосов
/ 21 марта 2011

Я думаю, что ваша страница getInfo.php должна просто напечатать SUCCESS или FAIL и в вашем методе успеха сделать

success: function(result) {
        if (result == 'SUCCESS')
        {
          $("#myInfo").remove();
          alert("Data found");
        }
        else
        {
          alert("Data not found");
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...