我有一个调用JQuery.get()的JavaScript方法,我想从它返回值到被调用函数..以下是代码:
function CheckExistance(userName) {
$.get(
"JQueryPage.aspx", { name: userName },
function(result) {
if (result == "1") {
value = true;
}
else if (result == "0") {
value = false;
}
else if (result == "error") {
value = false;
}
}
);
return value;
}
我希望return value;
返回get()
函数中设置的值...我知道get()
是异步操作,我想要一个解决方案吗?
答案 0 :(得分:7)
您无法将值“返回”到被调用的函数中;因为你已经意识到,AJAX调用是异步的。相反,您需要有效地延迟执行AJAX调用之后的代码;将此代码放在callback
函数中。
现在发生的事情是,当AJAX请求完成并且value
可用时执行此代码。
function CheckExistance(userName, callback) {
$.get(
"JQueryPage.aspx", { name: userName },
function(result) {
var value = false;
if (result == "1") {
value = true;
}
callback(value);
}
);
}
然后你的功能可能在哪里:
function validateUserName() {
var input = $('someField').val();
var isUnique = CheckExistance(input);
if (isUnique) {
// whatever
} else {
alert("This username is already taken");
};
};
现在应该是:
function validateUserName() {
var input = $('someField').val();
CheckExistance(input, function (isUnique) {
if (isUnique) {
// whatever
} else {
alert("This username is already taken");
};
});
};
答案 1 :(得分:2)
这是一个完美无缺的简单示例
function test() {
return $.ajax({
url: "/url/" + param,
type: 'get',
dataType: 'html',
async: false
}).responseText
}
答案 2 :(得分:-4)
此可能有效;
function CheckExistance(userName) {
var value
$.get(
"JQueryPage.aspx", { name: userName },
function(result) {
if (result == "1") {
value = true;
}
else if (result == "0") {
value = false;
}
else if (result == "error") {
value = false;
}
}
);
while(value == undefined);
return value;
}