Php JQuery/Ajax调用函数不正确
简介:这是一个基本的、独立的web表单。只是html表单,函数中包含JQuery 我有一个表格,检查电子邮件和用户名的唯一性和电子邮件的有效性。我使用jQueryOnChange事件来调用每个函数,这是对php文件的Ajax调用 用户名检查的JQuery如下所示: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
$("#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') {}