Jquery 根据ajax响应执行函数
我有两个函数,它们被称为onBlur,用于在完成注册过程之前验证用户名或电子邮件是否已注册 这是两个函数Jquery 根据ajax响应执行函数,jquery,ajax,Jquery,Ajax,我有两个函数,它们被称为onBlur,用于在完成注册过程之前验证用户名或电子邮件是否已注册 这是两个函数 function checkname() { jQuery.ajax({ url: "includes/check_signup.php", data:'username='+$("#name").val(), type: "POST", success:function(data){ $("#e
function checkname() {
jQuery.ajax({
url: "includes/check_signup.php",
data:'username='+$("#name").val(),
type: "POST",
success:function(data){
$("#error").html(data);
},
error:function (){}
});
}
function checkemail()
{
jQuery.ajax({
url: "includes/check_signup.php",
data:'email='+$("#email").val(),
type: "POST",
success:function(data){
$("#error").html(data);
},
error:function (){}
});
}
我有第三个函数,它在按钮submit上执行,将用户数据发送到数据库。现在,如果上述任何函数返回“用户名/电子邮件已注册”的成功消息,我如何停止执行该函数
这是第三个功能
$('#btn-signup').click(function(){
$.post(
$('#register-form').attr('action'),
$('#register-form :input').serializeArray(),
function(result){
$('#result').html(result);
}
);
});
使用信号量控制所需的通信量,假设您有一个DOM对象,其类为
result\u email
和result\u name
,并且最初两者都包含.text()=“blocked”
如果任何一个调用成功,意味着用户名或电子邮件已经存在,我们打开信号量以阻止注册按钮单击事件,但是如果检查方法再次调用,并且失败,那么name或email可以注册,我们从信号量中移除该块
function checkemail() {
jQuery.ajax({
url: "includes/check_signup.php",
data:'email='+$("#email").val(),
type: "POST",
success:function(data){
$(".result_email").text("blocked")
$("#error").html(data);
},
error:function (){
$(".result_email").text("")
}
});
}
function checkname() {
jQuery.ajax({
url: "includes/check_signup.php",
data:'username='+$("#name").val(),
type: "POST",
success:function(data){
$(".result_name").text("blocked")
$("#error").html(data);
},
error:function (){
$(".result_name").text("")
}
});
}
您也可以在JS中使用全局变量,但最好在IMO中使用DOM元素。您可以在字段的“onBlur”上或在提交之前进行两次字段检查,然后再添加用户
$("#name").on("blur",checkname);
在checkName success中,还可以设置标志nameValid=true
你可以这样做
function checkname() {
jQuery.ajax({
url: "includes/check_signup.php",
data:'username='+$("#name").val(),
type: "POST",
success:function(data){
nameValid = false;
},
error:function (){
nameValid = true;
}
});
}
同样,你也可以
$("#email").on("blur",checkemail);
设置emailValid标志。当用户单击/输入值并退出字段时,通常使用on blur
在submit按钮上,您可以检查这两个标志并仅在这两个标志都为true时调用
$('#btn-signup').click(function() {
if (nameValid && emailValid) {
if(!$(".result").text()) {
$.post(
// etc
);
} else {
$("#error").focus();
}
}
});
您还可以通过回调链接在提交时一起执行两个检查,在第一个检查成功时调用第二个检查,在第二个检查成功时调用提交。但这需要更长的等待时间,太多的嵌套回调(也称为回调地狱),最好的做法是在用户输入时立即给出内联用户反馈 这是全部代码: 确保ajax请求返回成功后替换代码。 我假设
0
的结果是它可用,否则它不可用
var isnameavable=false;
var isEmailAvailable=false;
函数checkname(){
jQuery.ajax({
url:“includes/check_signup.php”,
数据:“用户名=”+$(“#名称”).val(),
类型:“POST”,
成功:功能(数据){
$(“#错误”).html(数据);
if(parseInt(data)==0){
isnameavable=true;
}否则{
isnameavable=false;
}
},
错误:函数(){
日志(“连接错误”);
//仅供测试
控制台日志(“Demoooo”);
isnameavable=true;
}
});
}
函数checkemail(){
jQuery.ajax({
url:“includes/check_signup.php”,
数据:'email='+$(“#email”).val(),
类型:“POST”,
成功:功能(数据){
$(“#错误”).html(数据);
if(parseInt(data)==0){
isEmailAvailable=true;
}否则{
isEmailAvailable=false;
}
},
错误:函数(){
日志(“连接错误”);
//仅供测试
控制台日志(“Demoooo”);
isEmailAvailable=true;
}
});
}
$(“#btn注册”)。单击(函数(事件){
event.preventDefault();
如果(!isNameAvailable | |!isEmailAvailable){
控制台日志(“检查用户名和电子邮件”);
返回;
}
console.log(“成功…”);
美元邮政(
$(“#注册表形式”).attr('action'),
$(“#注册表形式:输入”).serializeArray(),
功能(结果){
$('#result').html(result);
}
);
});代码>
用户名:
电邮:
如何设置标志nameValid=true?我添加了设置标志的逻辑。请检查不走运,它会在控制台中不断返回此错误检查用户名和电子邮件
@RayanSp您是否尝试在名称
和电子邮件
字段中键入任何内容?您能否选择此问题的可接受答案?
$('#btn-signup').click(function() {
if (nameValid && emailValid) {
if(!$(".result").text()) {
$.post(
// etc
);
} else {
$("#error").focus();
}
}
});