0
externalCSSContents = [];

function getExternalCSSContents(){
        href = document.styleSheets[0].href;
        $.post(href, function(result){
            externalCSSContents.push(result);
            alert(externalCSSContents.length); // 1
        });
}

getExternalCSSContents();
alert(externalCSSContents.length); // 0

有人可以向我解释为什么在 $.post() 方法数组 externalCSSContents 的范围内是本地的吗?

4

3 回答 3

1

AJAX是异步的,在警报之后执行 post 回调

(我今天在这里打了很多次“异步”,现在我知道如何拼写了)

于 2012-04-13T13:13:58.140 回答
1

那是因为 ajax 请求尚未完成执行,而您正在提醒数组的内容。

你可以这样做。

function getExternalCSSContents(){
    href = document.styleSheets[0].href;
    return  $.post(href, function(result){ externalCSSContents.push(result); });
}

$.when( getExternalCSSContents() ).then(function(){ 
        alert(externalCSSContents.length);
}); 
于 2012-04-13T13:14:04.597 回答
1

这是因为异步请求。这就是 AJAX 的工作原理。例如,在Wiki上阅读有关 ajax 的更多信息

于 2012-04-13T13:14:05.580 回答