Jquery Ajax PHP - 如何确定PHP代码是否成功执行?

时间:2011-07-18 23:26:46

标签: php jquery ajax

所以这是我的想法,我的主页上有一个登录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 个答案:

答案 0 :(得分:1)

没有。成功和错误选项与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.');
    }
  }
});

答案 1 :(得分:1)

我所做的是在我的php结尾处使用带有true或false的variabel的回声,我在成功选项中执行了这个功能就像这样:

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!" );
                                 }

                    }

这是我的方式,它工作正常 希望它有用

答案 2 :(得分:0)

在你的login.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());
        }
}

确保在success()函数中实现alert()。希望有所帮助。

答案 3 :(得分:0)

根据您的信息,我假设您的php页面将进行验证,并使您在php脚本中返回true或false

您的代码中存在2个问题

1.你的php页面本身会返回true或false,另一方面他们不会将结果发送到ajax结果,除非你像Tomm上面说的那样发送它们

$ .sujax的2.success()和error()由请求NOT BY RESULT的成功决定,这意味着即使你的php回显“false”它也会触发success()事件,因为请求是成功的