Ter*_*ich 2 javascript ajax jquery post return-value
我知道AJAX是异步的,所有这一切.但我有以下代码:
function doesUsernameExist(element)
{
// Check via AJAX (POST) if username already exists in the database
var funcReturned = null;
$.post(
'_ajax_checkexist.php',
{
var: 'username',
value: element.value
},
function(data) {
funcReturned = (data.toLowerCase() == 'exists');
},
'data'
);
return funcReturned;
}
Run Code Online (Sandbox Code Playgroud)
我理解为什么函数没有正确返回值,但我可以使用什么作为解决方法?这适用于Validity插件,它需要doUsernameExist函数返回的布尔值.我不能做通常的办法,让$ .post函数改变一些HTML元素.它需要将true/false返回给doesUsernameExist.
我可以使用哪种解决方法?我很难过.
Edg*_*ado 13
如果呼叫是同步的,您可以返回一个值.这里有一个例子:
同步模式的解决方案:
function doesUsernameExist(element)
{
// Check via AJAX (POST) if username already exists in the database
var funcReturned = null;
$.ajaxSetup({async: false});
$.post(
'_ajax_checkexist.php',
{
var: 'username',
value: element.value
},
function(data) {
funcReturned = (data.toLowerCase() == 'exists');
},
'data'
);
$.ajaxSetup({async: true});
return funcReturned;
}
Run Code Online (Sandbox Code Playgroud)
代码的问题在于,在$.post执行时,函数继续执行(这是异步的),因此将null在$.post结束之前返回.
异步模式的解决方案:
使用异步调用,您不能返回值,但可以调用回调或执行代码.这可能是异步解决方案:
function doesUsernameExist(element)
{
var funcReturned = null;
$.post( //This post is asynchronous
'_ajax_checkexist.php',
{
var: 'username',
value: element.value
},
function(data) {
funcReturned = (data.toLowerCase() == 'exists');
userExistanceCallback(funcReturned);
},
'data'
);
//We don't return anything
}
function userExistanceCallback(funcReturned){
if(funcReturned == true)
alert("User exists!!");
else
alert("User does not exist!!");
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.干杯
| 归档时间: |
|
| 查看次数: |
9552 次 |
| 最近记录: |