Javascript范围问题

时间:2011-03-06 05:36:46

标签: javascript jquery

我正在努力让这个功能起作用。我认为这个功能非常自我解释:

function FileExists(path){
    var result = false;

    $.ajax({
        url:    "http://mydomain.com/"+path,
        type:   "HEAD",
        success:
                function(){
                    result = true;
                }
    });

    return result;
}

我需要在ajax post成功时调用的匿名函数,将在FileExists函数中定义的变量“result”设置为true,以便我可以从FileExists函数返回该值。我想我需要一个关闭,但他们混淆了我的地狱。

请帮忙! 谢谢!

2 个答案:

答案 0 :(得分:3)

这不是一个范围问题,而是因为$.ajax是异步的,这意味着FileExists将在return完成之前$.ajax。您应该做的是将所有依赖result的代码移到success回调中。

答案 1 :(得分:2)

Ajax调用默认是异步的,您可以使用回调函数:

$.ajax({
    url:    "http://mydomain.com/"+path,
    type:   "HEAD",
    success: function(){
        callback(true);
    }
});

或同步拨打电话。

$.ajax({
    async:   false,
    url:    "http://mydomain.com/"+path,
...