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

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

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

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

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

否。成功和错误选项与XHR请求的成功或失败有关。 你需要你的PHP脚本输出一些东西并检查。 例如,如果您的PHP脚本输出“ok”(即echo("ok"); )如果validation成功,您将使用ajax请求,例如这个

 $.ajax({ url: 'sql/login.php', success: function(data) { if(data=="ok") { alert('Login successfull.'); } else { alert('Login failed.'); } } }); 

在你的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 "

Data Exists

"; else echo "

Data doesnt Exist

"; }

在你的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()。希望有所帮助。

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

您的代码中存在2个问题

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

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