JQuery ajax post函数在javascript结束时执行
我在验证用户名是否已被使用时遇到问题。我试图使用jquery的“post”方法来确定用户名是否已经存在。但在执行此函数时,脚本总是跳到函数的末尾,并在执行“post”命令之前先执行脚本的其余部分。你能检查一下我的代码并帮我吗JQuery ajax post函数在javascript结束时执行,javascript,jquery,ajax,post,Javascript,Jquery,Ajax,Post,我在验证用户名是否已被使用时遇到问题。我试图使用jquery的“post”方法来确定用户名是否已经存在。但在执行此函数时,脚本总是跳到函数的末尾,并在执行“post”命令之前先执行脚本的其余部分。你能检查一下我的代码并帮我吗 $(“#提交”)。单击(函数(){ var username=document.getElementById(“用户名”).value; var email=document.getElementById(“email”).value; var passwort=docu
$(“#提交”)。单击(函数(){
var username=document.getElementById(“用户名”).value;
var email=document.getElementById(“email”).value;
var passwort=document.getElementById(“passwort”).value;
var passwort2=document.getElementById(“passwort2”).value;
var=false;
checkUsername();
if(validate==true){
$.post(“Login/register.php”{
用户名:用户名,
电邮:电邮,,
蒲草,蒲草,
passwort2:passwort2,
},功能(信息){
$(“#errorBox”).empty();
$(“#errorBox”).html(信息);
});
}否则{
$('#register')。提交(函数(){
返回false;
});
}
函数checkUsername(){
用户名=document.getElementById(“用户名”).value;
//用户名=replaceUmlauts(用户名);
如果(username.length>0){
document.getElementById(“用户名”).style.borderColor=“”;
//document.getElementById(“errorBox”).innerHTML=
// "";
验证=真;
检查可用性();
返回false;
}否则{
document.getElementById(“用户名”).style.borderColor=“红色”;
document.getElementById(“errorBox”).innerHTML=“用户名muss länger als ein Zeichen sein”;
//警报('用户名必须超过一个符号');
验证=假;
返回false;
}
}
功能检查可用性(){
美元邮政(
“Login/checkusername.php”{
用户名:username
},
功能(结果){
//如果结果是1
如果(结果==1){
//显示用户名为
//可用
文件
.getElementById(“errorBox”).innerHTML=“”;
返回false;
}否则{
//显示用户名不是
//可用
文件
.getElementById(“errorBox”).innerHTML=“用户名nicht verfuegbar”;
文件
.getElementById(“用户名”).style.borderColor=“红色”;
验证=假;
返回false;
}
});
}
返回false;
});代码>您的变量validate
存在范围问题,我建议您在函数checkUsername()
中这样做:
,这在您的函数中checkAvailability()
:
和var validate=checkUsername()代码>在主函数中的if语句之前
编辑:这段代码是脏的,你应该选择使用“老式JS”,比如document.getElementById
,或者jQuery(例如:$(“#myId”)
),但是不建议同时使用这两种方法,我没有足够的时间来清理它,但这将是一个好的开始。请注意,我使用了$.post(“/echo/html/”,{
仅用于演示目的,并对实际行进行了注释,因为它无法在小提琴中工作。请修改代码以满足您的需要
演示@
$(“#注册”)。在(“提交”功能上(evt){
evt.preventDefault();
var$username=$(“#username”);
var email=$.trim($(“#email”).val();
var passwort=$.trim($(“#passwort”).val();
var passwort2=$.trim($(“#passwort2”).val();
var$errorBox=$(“#errorBox”);
var isUser=checkUsername();
if(isUser){
检查可用性();
}
函数checkUsername(){
var usernameVal=$.trim($username.val());
如果(usernameVal.length>0){
$username.css({borderColor:“none”});
返回true;
}否则{
$username.css({borderColor:“red”});
$errorBox.html(“用户名muss länger als ein Zeichen sein”);
}
返回false;
}
功能检查可用性(){
//$.post(“Login/checkusername.php”{
$.post(“/echo/html/”{
“用户名”:$.trim($username.val())
},函数(结果){
//如果结果是1
如果(结果==1){
寄存器().done(函数()){
$errorBox.append(“Hurray!”);
});
}否则{
//显示用户名不是
//可用
$errorBox.html(“用户名nicht verfuegbar”);
$username.css({borderColor:“blue”});
返回;
}
});
}
函数寄存器(){
//返回$.post(“Login/register.php”{
返回$.post(“/echo/html/”{
用户名:$.trim($username.val()),
电邮:电邮,,
蒲草,蒲草,
passwort2:passwort2,
},功能(信息){
$errorBox.html(信息);
});
}
});
除非绝对必要,否则你不应该将vanilla JS与JQuery混合使用。我们也可以看到你的HTML吗?如果你使用任何JQuery,请全部使用!你的代码将缩小到三分之一大小,更具可读性。哇!你也在使用VanillaJS而不是JQuery。我只是粘贴操作代码来解决他的问题,糟糕的做法是另一个问题你是诚实的。哈。我像你说的那样编辑了我的代码,但它仍然不起作用,因为当用户名大于0时,我的变量“validate”是未定义的,我尝试返回我的checkAvailability()。你能主持你的公司吗
if (username.length > 0) {
document.getElementById("username").style.borderColor = "";
// document.getElementById("errorBox").innerHTML =
// "";
return checkAvailability();
} else {
document.getElementById("username").style.borderColor = "red";
document.getElementById("errorBox").innerHTML = "Username muss länger als ein Zeichen sein";
// alert('Username must be longer than one sign');
return false;
}
if (result == 1) {
// show that the username is
// available
document.getElementById("errorBox").innerHTML = "";
return true;
} else {
// show that the username is NOT
// available
document.getElementById("errorBox").innerHTML = "Username nicht verfuegbar";
document.getElementById("username").style.borderColor = "red";
return false;
}
$("#register").on("submit", function (evt) {
evt.preventDefault();
var $username = $("#username");
var email = $.trim($("#email").val());
var passwort = $.trim($("#passwort").val());
var passwort2 = $.trim($("#passwort2").val());
var $errorBox = $("#errorBox");
var isUser = checkUsername();
if (isUser) {
checkAvailability();
}
function checkUsername() {
var usernameVal = $.trim($username.val());
if (usernameVal.length > 0) {
$username.css({borderColor: "none"});
return true;
} else {
$username.css({borderColor: "red"});
$errorBox.html("Username muss länger als ein Zeichen sein");
}
return false;
}
function checkAvailability() {
//$.post("Login/checkusername.php", {
$.post("/echo/html/", {
"username": $.trim($username.val())
}, function (result) {
// if the result is 1
if (result == 1) {
register().done(function() {
$errorBox.append("<p>Hurray!</p>");
});
} else {
// show that the username is NOT
// available
$errorBox.html("Username nicht verfuegbar");
$username.css({borderColor: "blue"});
return;
}
});
}
function register() {
//return $.post("Login/register.php", {
return $.post("/echo/html/", {
username: $.trim($username.val()),
email: email,
passwort: passwort,
passwort2: passwort2,
}, function (info) {
$errorBox.html(info);
});
}
});