我将一些 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/