Jquery Ajax PHP - Как определить, успешно ли выполнен код PHP? - PullRequest
0 голосов
/ 19 июля 2011

Так что это моя идея, у меня на домашней странице есть диалоговое окно jquery для входа в систему, которое запрещает кому-либо использовать веб-страницу (за диалоговым окном формы входа).Я использую ajax для отправки введенной информации на страницу php, которая затем проверяет, существует ли комбинация имени пользователя и пароля в базе данных.Если это так, я возвращаю true и затем закрываю диалоговое окно (разрешающее доступ к сайту).

Как мне использовать ajax, чтобы проверить, возвращает ли мой php-скрипт (с выполненной страницы) значение true или false?Я предполагал, что опции успеха / ошибки функции ajax проверяли это, но приведенный ниже код, похоже, не работает.

    $('.login').dialog({
    closeOnEscape: false,
    title: false,
    modal: true,
    width: 'auto',
    show: {effect: "fade", duration: 1500},
    title: 'Login',
    buttons: {
        "Login": function() { 
            $.ajax({
                async: false,
                type: 'POST',
                url: 'sql/login.php',
                success: function(){
                    alert( "Success!");
                },
                error: function(){
                    alert( "Failed!" );
                },
                dataType: "html"
            });
        }
    }
});
$(".login").dialog().parents(".ui-dialog").find(".ui-dialog-titlebar").remove(); 

Ответы [ 4 ]

1 голос
/ 19 июля 2011

Что я сделал, так это вставил эхо в конец моего php с помощью переменной, установленной в true или false, я сделал эту функцию внутри параметра успеха, он выглядит так:

success: function(response){
                    if(response){
                            alert( "Success!");
                            }else{
                            alert( "Failed!" );
                                 }

                    }

Это сработало для меня, и вы можете поместить это в php

if($myvar){
$anothervar=1;
}else{
$anothervar=0;
}
echo $anothervar;

так что вы можете сделать это:

success: function(response){
                    if(response==1){
                            alert( "Success!");
                            }else{
                            alert( "Failed!" );
                                 }

                    }

это способ, которым я делаю это, и он отлично работает Надеюсь, что это полезно

1 голос
/ 19 июля 2011

Нет. Варианты успеха и ошибок относятся к успеху или неудаче запроса XHR. Вам нужен ваш php-скрипт для вывода чего-либо и проверки этого. Например, если ваш php-скрипт выдает «ok» (т. Е. echo("ok");), если проверка прошла успешно, вы бы использовали ajax-запрос, такой как этот

$.ajax({
  url: 'sql/login.php',
  success: function(data) {
    if(data=="ok") { 
       alert('Login successfull.');
    } else {
       alert('Login failed.');
    }
  }
});
0 голосов
/ 19 июля 2011

Согласно вашей информации, я предполагал, что ваша php-страница выполнит проверку, и вы заставите их вернуть значение true или false в сценарии php

В вашем коде 2 проблемы

1.Ваша php-страница будет возвращать true или false внутри себя, с другой стороны, они не будут отправлять результат в результат ajax, если вы не отправите их, как сказал Томм выше

2.success () и error () из$ .ajax определяется успешностью запроса NOT BY RESULT, что означает, что даже если ваш php echo "false", он вызовет событие success (), потому что ЗАПРОС УСПЕШНО ОТПРАВЛЕН.

0 голосов
/ 19 июля 2011

В вашем логине.php:

   if($_POST['data']){

        $curData = $_GET['country'];
        $query = "SELECT * FROM yourTable 
                    WHERE tblData = '$curData'";
        $result = mysql_query($query) or die;

        if($result>0)
               echo "<p class='checkExistance'>Data Exists</p>";
            else
               echo "<p class='checkExistance'>Data doesnt Exist</p>";
    }

В вашем JavaScript:

function isSuccess(){
    if($('.checkExistance').text() === "Data Exists"){
             success($('.checkExistance').text()); //alert success!
    }else{
           success($('.checkExistance').text());
    }
}

На самом деле не проверял, работает ли это, но вы в значительной степени поняли идею. При вызове AJAX сделайте следующее:

$.ajax({
   //
   ..
   success:isSuccess

});

or 

success:function(){
    if($('.checkExistance').text() === "Data Exists"){
                 success($('.checkExistance').text()); //alert success!
        }else{
               success($('.checkExistance').text());
        }
}

Убедитесь, что вы реализовали alert () в функции success (). Надеюсь, это поможет.

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