【问题标题】:Loading TXT files before displaying them with ajax [duplicate]在使用 ajax 显示之前加载 TXT 文件 [重复]
【发布时间】:2016-04-12 19:14:06
【问题描述】:

我正在用 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,我发现没有一个线程对我有帮助,也许是因为我真的不是专家。

【问题讨论】:

标签: javascript jquery ajax


【解决方案1】:

可以通过callback实现,下面的方式在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();

【讨论】:

  • 我无法用我所有的文本文件创建一个数组,我已经有大约 150 个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 2015-04-18
相关资源
最近更新 更多