从JavaScript中的回调返回返回undefined?

时间:2015-10-07 16:25:44

标签: javascript ajax callback return undefined

我有这段代码:

function fetchSocialCount(type,fileSrc,callback){
    var req = new XMLHttpRequest();
    req.onload = function(){
        if(req.status === 200 && req.readyState === 4){
            var countResponse = JSON.parse(req.responseText);
            callback(countResponse);
        }
    }
    req.open("GET","../scripts/php/returnSocialCount.php",false);
    req.send();
}
var test = fetchSocialCount("img","ez.png",function(count){
    return count;
});

console.log(test);

但由于某种原因,test未定义。我的AJAX确实有效,它返回一个对象。问题是什么?

1 个答案:

答案 0 :(得分:4)

您的test获取fetchSocialCount本身的返回值,这是未定义的,因为它不会返回任何内容。

你可以试试这个:

function fetchSocialCount(type, fileSrc) {
    var req = new XMLHttpRequest()
        , result = null;

    req.onload = function(){
        if(req.status === 200 && req.readyState === 4){
            result = JSON.parse(req.responseText);
        }
    }
    req.open("GET","../scripts/php/returnSocialCount.php",false);
    req.send();

    return result;
}

由于您使用的是同步请求,因此您应该能够直接返回其结果;事实上,正如@Trolleymusic在评论中指出的那样,你从回调中回来了,因为你确实没有获得帮助

  

回调返回到调用回调的回调(在这种情况下)   callback(countResponse)),不再向上