gpt4 book ai didi

javascript - jquery 函数无法正确返回值

转载 作者:行者123 更新时间:2023-12-02 20:41:57 24 4
gpt4 key购买 nike

我有这个功能

$.fn.validate.checkValidationName = function(id) {
$.post("PHP/submitButtonName.php", {checkValidation: id},
function(data) {
if(data.returnValue === true) {
name = true;
} else {
name = false;
}
**console.log("name = "+name); **//this prints out "true"****
}, "json");
};

以及调用它的 .click 函数。所有变量都在此函数之外声明,以便其他函数可以访问它们

$('.submitBtn').click(function() {
//clears the array before re-submitting the click function
nameValues = [];
usernameValues = [];
emailValues = [];
name = false;
username = false;
email = false;

//for each of the input tags
$("input").each(function() {

//if the curent input tag has the class .name, .userpass, or .email
if(($(this).hasClass("name"))) {
nameValues.push($(this).val());
} else if(($(this).hasClass("userpass"))) {
usernameValues.push($(this).val());
} else if(($(this).hasClass("email"))) {
emailValues.push($(this).val());
}

});
//call the checkValidation function with the array "values"
$.fn.validate.checkValidationName(nameValues);
$.fn.validate.checkValidationUsername(usernameValues);
$.fn.validate.checkValidationEmail(emailValues);

console.log("name = "+name); //but this prints out "false"
console.log("username = "+username);
console.log("email = "+email);

if((name === "true") && (username === "true") && (email === "true")) {
alert("Everything checks out great");
} else {
alert("You missed one!");
}
});

当我单击链接触发第一个函数时,它在函数内返回值为“true”,但是当我在 .函数调用后单击函数,打印出 false。

这是为什么呢?我需要从 checkValidatoinName 函数返回一些内容吗?

最佳答案

$.post是异步的,这意味着它不会等待结果返回才继续。您可能在某处将 name 初始化为 true,并且第一次获得 true,但所有其他时间,它都是 false ,因为第一个 AJAX 已完成并将其设置为 false

尝试使用$.ajax而不是 $.post,并在选项中将 async 设置为 false$.post documentation显示 $.post 提供给 $.ajax 的选项。

关于javascript - jquery 函数无法正确返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2219189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com