2011-07-18 84 views
0

所以这是我的想法,我的主页上有一个登录jquery对话框,阻止任何人使用网页(在登录表单对话框后面)。我使用ajax将输入的信息提交给php页面,然后检查数据库中是否存在用户名/密码组合。如果是这样,我返回true,然后关闭对话框(允许访问该网站)。Jquery Ajax PHP - 如何确定PHP代码是否成功执行?

如何使用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(); 
+0

只是想扔掉那里。如果用户未被授权,您是否仅限制通过客户端方法访问内容(javascript)?如果是这样,你会想重新思考,任何有Firebug的人都可以绕过你的安全。 – Adrian

回答

1

我所做的是把回声在我的PHP与放在真或假的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!"); 
           } 

        } 

这个我s表示我做的方式,它工作正常 希望它是有用的

+0

我试过了,没有工作。总是返回'假'! – JimmyJammed

+0

然后,也许有一个问题,您的查询到数据库 – apz2000

+0

得到它的工作!谢谢! – JimmyJammed

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.'); 
    } 
    } 
}); 
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()。

0

根据您的信息,我认为你的PHP页面会做一个验证,你让他们的PHP脚本

内返回true或false有您的代码2个问题

贵国的PHP页面将在自身返回true或false,在另一方面,除非你给他们出像人Tomm的,他们不会将结果发送到AJAX结果上面

2.success()和$ .ajax的错误()是由请求的成功决定NOT BY RESU LT这意味着,即使你的PHP回声“假”,它会触发success()事件,因为请求已成功发送。