在外部文件中使用 JQuery 获取文本文件内容

Dan*_*Dan 2 javascript jquery

我有一个外部 javascript 文件,我想用它来收集多个文本文件的内容。JQuery .get() 似乎是最明显的选择。如果 JQuery 位于页面中,我可以使此工作正常,但当 JQuery 位于外部文件中时则不行。我错过了一些非常简单的东西......而且我目前正在同一个文件中将普通的 javascript 与 JQuery 混合在一起,我担心这种形式很糟糕。

我尝试访问的所有文件都位于同一文件结构内。目前我的外部 .js 中有以下内容:

function addPanels() {
    // eventually loop over list of local HTML files
    // and do some stuff with the results...
    fileContents = readHTMLFile();
}

jQuery(function($){
    readHTMLFile = $.get('../html/test.html', function(data) {
        alert('Loaded something');
        return(data);
    });
});
Run Code Online (Sandbox Code Playgroud)

我的 HTML 页面包含以下内容:

<script type="text/javascript">
    $(document).ready(function(){
        addPanels();
    });
</script>
Run Code Online (Sandbox Code Playgroud)

很确定这是一个 RTFM 时刻,因此找到正确的手册/教程会很棒!

nek*_*man 5

jQuery.get是一个异步函数,具有在服务器返回所请求的文档时执行的回调。因此,您无法从该方法返回任何数据。

function addPanels() {
    // will not work
    fileContents = readHTMLFile();
}

...

readHTMLFile = $.get('../html/test.html', function(data) {
    // will not work
    return(data);
});
Run Code Online (Sandbox Code Playgroud)

然而,这将起作用:

var addPanelCallback = function(html) {
    // append html (or something like that)
    alert(html);
};

var addPanel = function(url) {
   $.get(url, addPanelCallback);
};

addPanel('../html/test1.html');
addPanel('../html/test2.html');
Run Code Online (Sandbox Code Playgroud)

示例: http: //jsfiddle.net/FgyHp/