我有这段代码:
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确实有效,它返回一个对象。问题是什么?
答案 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)
),不再向上