Php JQuery/Ajax调用函数不正确

Php JQuery/Ajax调用函数不正确,php,jquery,Php,Jquery,简介:这是一个基本的、独立的web表单。只是html表单,函数中包含JQuery 我有一个表格,检查电子邮件和用户名的唯一性和电子邮件的有效性。我使用jQueryOnChange事件来调用每个函数,这是对php文件的Ajax调用 用户名检查的JQuery如下所示: $("#username").change(function() { var username = $("#username").val(); var msgbox_username = $("#username_st

简介:这是一个基本的、独立的web表单。只是html表单,函数中包含JQuery

我有一个表格,检查电子邮件和用户名的唯一性和电子邮件的有效性。我使用jQueryOnChange事件来调用每个函数,这是对php文件的Ajax调用

用户名检查的JQuery如下所示:

$("#username").change(function() {
    var username = $("#username").val();
    var msgbox_username = $("#username_status");
    var dataString = "username="+ username;

    $("#username_status").html('<img src="images/loader.gif">Checking Availability.');
    if (username != "" && username.length >= 6){
        $.ajax({
            Type: "POST",
            url: "functions/check_username.php",
            data: dataString,
            success: function(msg_username) {
                $("#username_status").ajaxComplete(function (event, request) {
                    if (msg_username == 'Username Ok') {
                        $("#username").removeClass("red").addClass("green");
                        msgbox_username.html('<font color="Green">Available</font>');
                    } else {
                        $("#username").removeClass("green").addClass("red");
                        msgbox_username.html(msg_username); 
                    }
                });
            }
        });
        return false;
    } else {
        $("#username").removeClass("green").addClass("red");
        msgbox_username.html('<font color="Red">Username of 6 or more characters is required</font>');
    }
}); 
<?php
$username = $_GET["username"];
include_once("../includes/connect.php");
$query = "SELECT    username 
          FROM      sss_users
          WHERE     username = '$username'";
$result = mssql_query($query);  
if(mssql_num_rows($result) > 0 && strlen($username) >= 6) {
    echo '<font color="#cc0000"><strong>' . $username . '</strong> is already in use. </font>'; 
} else {
    echo 'Username Ok'; 
}
?>
改为:

$("#username_status").ajaxComplete(function (event, request, settings) { ... code and new if statement ... });
然后我把它包起来

if(settings.url == 'functions/check_username.php') {} 
围绕验证代码。此过程对用户名和电子邮件进行了验证

每当Ajax请求完成时,jQuery都会触发ajaxComplete 事件已向注册的任何和所有处理程序 .ajaxComplete方法此时执行


可能两个处理程序都被触发。

指定程序的位置或制作一个JSFIDLE示例您是说在步骤3中,更改电子邮件会删除用户名的验证消息吗?是的。这几乎就像调用电子邮件验证的OnChange也调用用户名验证一样。但是,没有理由这样做,因为OnChange事件链接到两个不同的输入字段。这正是问题所在。解决方案是将设置传递到函数中,然后检查settings.url==url是否是我所需要的,以防止其他函数在不应该运行时运行。
$("#username_status").ajaxComplete(function (event, request) { ... code here ... });
$("#username_status").ajaxComplete(function (event, request, settings) { ... code and new if statement ... });
if(settings.url == 'functions/check_username.php') {}