ajax调用检查重复数据

这是让ajax检查用户存在的表单。

  Register new user!    Username: 
Password:
function register_user() { $.ajax( { type:"POST", data:username, url:"userexists.php" }) .fail(function() { $('#user').html("This user already exists"); } ); }

这是userexists.php模块

  

但是我很难弄清楚ajax函数是如何实际工作的,例如,在我知道输入的用户名已被使用后,我应该输入空白字段? 我根本不懂阿贾克斯。

[ 更新 ]谢谢,我现在明白了,我有几个答案,不知道选哪一个作为最佳答复。 没有选择全部的选项。

您的代码中存在很多错误,请尝试以下代码:

   Register new user!    Username: 
Password:

并为您的PHP代码:

  

由于你是AJAX的新手,让我试着用一些解释来帮助你。

AJAX代表异步Javascript和XML。 使用它,您可以向另一个页面发出请求,并根据另一个页面返回的结果使原始页面的行为不同。

那么这有用吗? 好; 您甚至可以在“用户名”字段上设置onblur,以检查远程脚本以查看用户名是否已被使用。 (你在目前的设置中已经做了。干得好!)

首先; .fail()告诉您当前的页面“如果ajax请求失败,请让我们执行此代码”。 这称为回调。 回调是在异步请求完成时执行的javascript代码的函数。

所以你想要实际做的是使用.done()方法。 这告诉你的jQuery请求“嘿,当你完成这个请求时,做这段代码。当你这样做时,我会坐在这里处理发生的任何事情”。

所以你可以看到使用.done()和.fail()之间存在细微的差别,但是我可以看到你很容易与.fail()成为ajax的新手。

让我们回到你当前的问题。 让我们将ajax修改为更像这样的东西:

 $("#submit").click(function() { $.ajax({ type: "POST", data: "username="+$("#username").val(), url: "userexists.php" }) .done(function(response){ $('#user').html(response); }); }); 

这样做就是为你的提交按钮绑定一个onclick处理程序,其id为“submit”。 所以现在你可以删除onclick =“register_user”。 其次,它说,“嘿网页,请使用参数名称username发送userexists.php用户名文本框值。当您完成该请求后,将#user的html设置为响应。

所以关闭它并且做到了。

现在你的PHP文件,你可以这样做:

  

因此,一旦您的脚本执行其查询,如果它找到结果,它将在HTML div中说“用户名可用!”。 否则,如果找到匹配,则显示“抱歉,用户名不可用”。

希望这有助于您更好地了解ajax!

这在技术上取决于你。 (例如)您可以为“用户存在”返回“1”,为“用户不存在”返回“0”,或返回更详细的XML。 客户端应用程序(Javascript)将读取返回的结果并向用户打印出适当的消息。

如果您的函数实际失败(服务器端错误等),则应使用.fail方法。 所以它似乎不适合你想要做的事情。 我会在你的“.done()”代码中输入如上所述的返回值的测试并打印出正确的消息。

使用Javascript:

 .done(function ( data ) { if(data == "0") alert("Your username is OK"); else alert("Your username is already used"); }); 

PHP:

 if(0!=mysql_numrows($query)) { echo "0"; } else { echo "1"; } 

当服务器返回意外数据时,使用ajax中的函数.fail。 但你的PHP代码不会返回任何东西。 使用这样的东西:

 function register_user() { $.ajax( { type:"POST", data:username, url:"userexists.php" }) .done(function(_return) { if(_return) { if(_return['status']=='yes') { $('#user').html(_return['msg']); } } }) .fail(function()); } 

在PHP中:

 if(0!=mysql_numrows($query)) { $return = array('status'=>'yes', 'msg'=>"User alredy exist"); echo json_encode($return); return true; } 

现在,您可以添加更多具有许多状态的条件,并在javascript中解析它。