ajax请求return,细说JavaScript ajax异步请求return undefined

在前端开发中,遇到Ajax异步请求导致返回值为undefined的问题,通常是因为异步特性使return语句在数据返回之前执行。解决办法是将请求设为同步或使用回调函数。本文通过一个例子展示了如何利用回调函数在Ajax成功回调中存储并返回数据,确保在正确的时间获取返回值。
摘要由CSDN通过智能技术生成

在制作注册表单验证时我们需要通过ajax请求数据,例如我们需要请求数据库中的用户名判断是否存在,这时我们就需要return,再者我们很多时候需要使用数据库中的数据,这时我们也需要将数据返回出去。

我们看下下面验证数据库是否存在输入的用户名却return undefined的例子

// 发送ajax请求

$.ajax({

type: "POST",

url: "checkName.php",

data: {

username: $inputVal

},

success: function(responseText) {

if (responseText === "denied") {

// 若已存在

return false;

} else {

return true;

}

}

});

在这我们我们发送了一个异步请求来验证输入的用户名,但结果却没有想的那样返回true or false,却返回了undefined,这是因为你发送了异步请求,但请求的数据还没返回回来,就已经执行到return语句,自然就返回了undefined。

所以我们需要将异步请求变为同步,用回调函数来发送return值,并在ajax的success回调中用变量存储返回值,。

var getFalse = function() {

return false;

},

getTrue = function() {

return true;

};

var getAjax = function(successFn, failFn) {

var callBackReturn;

// 发送ajax请求

$.ajax({

type: "POST",

url: "checkName.php",

// 发送同步请求

async: false,

data: {

username: $inputVal

},

success: function(responseText) {

if (responseText === "denied") {

$tipObj.html(tipText[2]);

callBackReturn = failFn();

} else {

$tipObj.html(tipText[3]);

callBackReturn = successFn();

}

}

});

return callBackReturn;

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值