如何将回调函数中的值返回给调用者?

时间:2011-03-30 22:32:33

标签: javascript ajax callback return

如何使这个小功能“图像存在”返回ajax请求是否成功?

function imageExists(path){
    $.ajax({
        url: path,
        type: 'HEAD',
        error:
            function(){
                return false;
            },
        success:
            function(){
                return true;
            }
    }); 
}

3 个答案:

答案 0 :(得分:4)

您将在success函数或error函数中返回AJAX调用的结果,因此应从该点调用接下来应调用的任何函数。< / p>

因为AJAX请求是异步的(我建议不要让它成为阻塞同步调用),所以你发出请求但不知道它什么时候会返回;它会在它返回时给你打电话,所以你只需要提供一些东西来打电话。

function imageExists(path){
    $.ajax({
        url: path,
        type: 'HEAD',
        error:
            function(){
                iveReturned(false);
            },
        success:
            function(){
                iveReturned(true);
            }
    });   
}

function iveReturned(result) {
    // code here to do something following AJAX response.
}

答案 1 :(得分:3)

我相信你必须使用同步模式并使用一个单独的变量来存储返回值。

function imageExists(path){
    var isSuccess;
    $.ajax({
        url: path,
        type: 'HEAD',
        async: false,
        error:
            function(){
                isSuccess = false;
                return false;
            },
        success:
            function(){
                isSuccess = true;
                return true;
            }
    });
    return isSuccess;
}

答案 2 :(得分:1)

创建一个var以在全局级别保存响应,然后将async设置为false。然后,您需要在成功或错误函数中设置该var。

http://api.jquery.com/jQuery.ajax/

function imageExists(path){
myVar = null;
$.ajax({
    url: path,
    type: 'HEAD',
    error:
        function(){
            myVar = false;
        },
    success:
        function(){
            myVar = true;
        },
    async: false
}); 
}