这可能相当简单,但我无法找到解决方法......我有js(jQuery)代码,如下所示:
function publicCheck(research, $clicked) {
var result = null;
$.ajax({
type: "POST",
data: "research="+research+ "&action=check",
url: "ajax_check.pl",
success: function (msg) {
if (something ...) {
result = "ok";
}
});
return result;
}
=>现在为什么我每次都会返回null(我知道我的条件正常)。它必须是范围问题。为什么结果不是“ok”但是即使条件有效也总是为空?
答案 0 :(得分:3)
不要吝啬,但在提出问题之前你应该先看一下,这是一个非常常见的问题,这里是对类似问题的回答:
Variable scope in Javascript Object
如果您有进一步的疑虑,我们可以帮助您。
答案 1 :(得分:2)
$.ajax()
是异步调用,除非您提供参数,否则无法获得结果
async: false
不建议这样做,您的浏览器将会冻结,直到您收到回复为止。
如果您提供返回回调
,那就更好了function publicCheck(research, $clicked, callback) {
$.ajax({
type: "POST",
data: "research=" + research + "&action=check",
url: "ajax_check.pl",
success: function (msg) {
if (something...) {
callback("ok");
}
}
});
}
用法:
publicCheck(research, $clicked, function(status) {
alert(status); // yeilds ok
});
答案 2 :(得分:0)
由于您正在使用AJAX调用,因此它是异步执行的。 jQuery倾向于使用AJAX这么简单,不要花时间去理解它。请花点时间了解AJAX的异步特性,你将从中受益匪浅。