在使用ajax显示之前加载TXT文件

时间:2016-01-08 07:13:08

标签: javascript jquery ajax

我正在使用js中的小文本游戏,我发现保存文本的最简单方法是使用文本文件。我可以在不同的文件夹中订购它们,它们非常轻巧,并且在我需要进行更改时,它们很容易识别和编辑。

我正在使用ajax加载它们

    $.ajax({
    url: 'text/example.txt',
    success: function(text){
            document.getElementById("main").innerHTML = document.getElementById("main").innerHTML + text;
    }
});

正如我在另一个帖子中向我建议的那样。

老实说,到目前为止,在单例情况下,它一直运行良好。当只需要显示一个TXT文件时,实际上没有问题。但是,不幸的是,在需要以正确的顺序显示许多不同文件的情况下(假设大约有10个不同的文件),文本会混乱并且无序加载。我打算假设这是因为它无法足够快地获取txt文件。

所以在这一点上我真的不太清楚该怎么做。

有没有办法让我的脚本在打印下一段文字之前等待,然后再显示一段尚未加载的文字?

也许在访问网站时加载所有txt文件的方法?

我的知识非常有限,所以我真的不确定如何解决这个问题。

尝试搜索google和stackoverflow,我找到的所有帖子都没有帮助我,也许是因为我真的不是专家。

1 个答案:

答案 0 :(得分:1)

您可以通过回调实现,以下方式将在完成后逐个调用ajax:

//setup an array of AJAX url
var ajaxes  = [{ url : 'text/example.txt'}, { url : 'text/example1.txt'}],
    current = 0;

//declare your function to run AJAX requests
function do_ajax() {

    //check to make sure there are more requests to make
    if (current < ajaxes.length) {

        //make the AJAX request with the given data from the `ajaxes` array of objects
        $.ajax({
            url      : ajaxes[current].url,
            success  : function (text) {
                document.getElementById("main").innerHTML = document.getElementById("main").innerHTML + text;
                //increment the `current` counter and recursively call this function again
                current++;
                do_ajax();
            }
        });
    }
}

//run the AJAX function for the first time when you want
do_ajax();