gpt4 book ai didi

javascript - jquery ajax 调用没有按预期返回

转载 作者:行者123 更新时间:2023-11-30 12:26:46 25 4
gpt4 key购买 nike

我不确定为什么这个 jquery ajax 调用失败了。基本上,我想进行身份验证,如果身份验证成功,就做一些事情。

我找到了这个,但答案似乎很简短,对我很有用(假设您已经知道如何实现该解决方案)。 jQuery ajax return value

这是我的 ajax 调用(我已经去除了获取用户名/密码的错误信息):

function authenticate() {
$.ajax({ //TODO: Securely send this (ssl?)
type: 'POST',
url: 'includes/clientAuthenticate.php',
data: { username: username, password: password},
success:function(data){
if(data==='true') {
return "true";
} else {
return "User failed to log into the system.\nEmail request ignored.\n\nError message: \n" + data;
}
},
error:function(jqXHR, textStatus, errorThrown){
return "User failed to log into the system. Potential problem with server or connection.";
}
});

我在这个函数中调用它:

function attemptEventSubmit(eKey) {
var authReturn = authenticate();
if(authReturn=="true") {
emailEvent(eKey);
} else {
alert(authReturn);
}
}

当它返回时,它总是警告 authReturn 是“未定义的”。我怀疑它将 authReturn 定义为未定义,因为身份验证函数在 ajax 调用返回之前“完成”...

但我不确定如何解决这个问题。

我怀疑我可以单独调用而不是返回值...(例如,在本例中,直接在 ajax 成功函数中调用 emailEvent 函数)但这会使身份验证函数变得特定...而且它不会不再能够用于其他目的的身份验证。

最佳答案

您可以使用您的代码,但需要回调。更好的方法是研究 promise 。

function authenticate(onsuccess, onfail) {
$.ajax({ //TODO: Securely send this (ssl?)
type: 'POST',
url: 'includes/clientAuthenticate.php',
data: { username: username, password: password},
success:function(data){
onsuccess(data); // you should check if this is a function
},
error:function(jqXHR, textStatus, errorThrown){
onfail(errorThrown);
}
});

function attemptEventSubmit(eKey) {
authenticate(
function(ajaxData){
emailEvent('whatever you want to send');
},
function(errThrown){
alert(errThrown);
});
}

关于javascript - jquery ajax 调用没有按预期返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29084298/

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