javascript变量范围

时间:2011-12-20 12:09:00

标签: jquery variables scope

这可能相当简单,但我无法找到解决方法......我有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”但是即使条件有效也总是为空?

3 个答案:

答案 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的异步特性,你将从中受益匪浅。