用户使用jQuery检查可用性
我试图检查我的用户名是否可以通过使用jQuery注册,该脚本实际上没有错误,但它仍然说" the username in use "
即使数据库中没有用户名记录。
这是我的函数的PHP代码
function checkavailabileUserName($UserName) { if(isSet($_POST['userName'])) { $username = $_POST['userName']; $sql_check = mysql_query("SELECT userUserName FROM user WHERE userUserName='$username'") or die(mysql_error()); if(mysql_num_rows($sql_check)) { echo 'The username '.$username.' is already in use.'; } else { echo 'OK'; } } }
我在这个名为RegisterUserAction.php
的页面上调用此函数
checkavailabileUserName($UserName);
这是JAVASCRIPT代码
pic1 = new Image(16, 16); pic1.src = "http://sofzh.miximages.com/php/loader.gif"; $(document).ready(function(){ $("#userName").change(function() { var usr = $("#userName").val(); if(usr.length >= 3) { $("#status").html(' Checking availability...'); $.ajax({ type: "POST", url: "RegisterUserAction.php", data: "userName="+ usr, success: function(msg){ $("#status").ajaxComplete(function(event, request, settings){ if(msg == 'OK') { $("#userName").removeClass('object_error'); // if necessary $("#userName").addClass("object_ok"); $(this).html(' Available '); } else { $("#userName").removeClass('object_ok'); // if necessary $("#userName").addClass("object_error"); $(this).html(msg); } }); } }); } else { $("#status").html('The username should have at least 3 characters.'); $("#userName").removeClass('object_ok'); // if necessary $("#userName").addClass("object_error"); } }); });
最后,这里是字段的HTML代码
$( function () { twitter.screenNameKeyUp(); $('#user_screen_name').focus(); });
我哪里做错了 ?
您的代码中存在错误。 您使用$ UserName作为函数checkavailabileUserName的参数,但您没有将该参数传递给该函数。 这会导致错误,因此只有您收到消息“用户名在使用中”。
从函数中删除$ UserName参数,代码将完美地运行。
如果您可以使您的代码更干净整洁并且可以使用jquery ajax调用和PHP代码,那将是很好的:
Jquery Ajax Call
jQuery(document).ready(function(){ jQuery("#userName").change(function() { jQuery("#status").empty(); var usr = jQuery("#userName").val(); if(usr.length >= 3) { jQuery("#status").html(' Checking availability...'); jQuery.ajax({ type: "POST", url: "RegisterUserAction.php" , data: "userName="+ usr, success: function(response){ if(response) { jQuery('#status').html(' Available '); return true; } else { jQuery('#status').html('The username '+usr+' is already in use.'); return false; } } }); } else { jQuery("#status").html('The username should have at least 3 characters.'); return false; } }); });
PHP代码:
function checkavailabileUserName($checkavailabileUserName) { if(isset($_POST['userName'])) { $username = $_POST['userName']; $sql_check = mysql_query("SELECT userUserName FROM user WHERE userUserName ='$username'") or die(mysql_error()); if(mysql_num_rows($sql_check)>0) { echo false; } else { echo true; } } else { echo false; } }
首先,您应该使用Firebug for FF或Chrome / IE开发人员工具,具体取决于您选择的浏览器(按F12)。 看看控制台,看看AJAX的post是什么样的。 确保它正确发布并且您具有实际值。 通常我会这样做我的jQuery AJAX:
$.ajax({ type: "POST", url: "RegisterUserAction.php", data: { userName: usr }, dataType: "json", success: function(data) { if(data.success == 'true'){ //do something } else { //do something } } });
然后在PHP页面上,我发送我的json编码回调,如下所示:
if (mysql_num_rows($sql_check)>0) { //do something $return_arr["success"] = 'true'; } else { //do something $return_arr["success"] = 'false'; } echo json_encode($return_arr);
尝试修改您的AJAX以在我的示例中使用数据方法和dataType,看看是否有帮助。 看一下Firebug / Dev工具控制台。 价值是否会超过? 如果是这样,那么PHP方面可能有问题。 让我知道它是怎么回事,如果它是PHP部分我们可以进一步研究(虽然它现在看起来很好)。
我认为这一行:
data: "userName="+ usr,
根据jQuery规范,数据应该以这种格式传递
{ "userName": usr}
所以你可能根本就没有发送任何POST数据,也没有进入
if(isSet($_POST['userName'])){
并且如果空(不是’OK’)则发送消息,这就是为什么你回答"the username in use"
- 自定义样式的jqueryvalidation
- 通过滚动页面来实现jQuery动画元素
- JQuery动画文本颜色
- IE8后退按钮和动态内容
- jQuery复选框validation
- 如何选择复选框jquery对象
- 如何在调用另一个函数之前等待div加载?
- 使用ASP .NET MVC和jQuery AJAX请求下载服务器生成的CSV
- jScrollPane滚动条问题
Interesting Posts