javascript - jQuery AJAX 和 JSON 性能查询

标签 javascript json jquery

我将一些 JSON 数据存储在一个文本文件中,以便在我的页面中使用 jQuery Ajax 进行查询。目前,我的文本文件包含大约 10 个方面的数据(可能包含另外 30 个方面的数据)。 JSON 数据包含问题和这些问题的答案。

在我的 JavaScript 文件中,我设置了不同的函数来获取特定的数据位。

例如:

function GetAnswer(questionName) {
    var correctAnswer = null;

    jQuery.ajax({
        type: "GET",
        url: "../content/questions.txt",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: "",
        async: false,
        success: function (result) {
            $.each(result, function (i, q) {    
                if (q.questionID == questionName) {
                    correctAnswer = q.correctAnswer;
                    return false;
                }
            });
        },
        error: function () {   },
        complete: function () {   }
    });

    return correctAnswer ;
}

正如您从我的代码片段中看到的那样,我正在遍历我的 JSON 以获取我需要的数据。我还有其他以类似方式编码的函数来获取问题类型、问题名称等。

我发现我正在一个接一个地调用这些函数来获取我需要的数据。我认为从性能的 Angular 来看,我查询 JSON 数据的方式并不好,因为我要遍历整个 JSON 数据集,直到找到匹配项。

有没有更好的方法来查询我的 JSON 数据?

注意:由于我使用的技术 (SCORM 1.2) 的限制,我不得不使用文本文件来存储问题。

最佳答案

遍历 JSON 对象的速度相对较快。 (相对而言)较慢的是每次都加载该文本文件(尽管它可能被缓存)。

无论哪种方式,我都建议在用户第一次启动问题/回答情况时加载 JSON,或者只是在页面加载时加载它(您可以异步执行)并存储它以备后用。

后者的例子:

jQuery(document).ready(function(){
    var questions = '';

    jQuery.ajax({
        type: "GET",
        url: "../content/questions.txt",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        data: "",
        async: false,
        success: function (result) {
            questions = result;
        },
        error: function () {   },
        complete: function () {   }
    });

    function GetAnswer(questionName) {
        var correctAnswer = null;
        $.each(questions, function (i, q) {    
            if (q.questionID == questionName) {
                correctAnswer = q.correctAnswer;
                return false;
            }
        });

        return correctAnswer ;
    }
});

关于javascript - jQuery AJAX 和 JSON 性能查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079132/

相关文章:

javascript - 如何停止jquery动画?

jquery - 将 Mmenu 集成到 Bootstrap 中

javascript - 对某些链接执行无索引、无关注

javascript - 将数组/对象键值替换为另一个数组/对象 javascript 中的键值

python - 将 python 数据帧转换为 json 格式

json - Scala 2.10 + Json 序列化和反序列化

jquery - 如何制作自定义字体很棒的图标?

javascript - 在新日期调用 getTime 时,未定义不是函数

javascript - 对象之间的指针行为

javascript - 选中复选框将类添加到 child