当前没有任何中断。:)我只是想获得一些表现
我有一个带有链式选择的表单(一个下拉列表更改,第二个下拉列表值更改)。现在,我的表单将对另一个页面执行ajax调用,并以json数据字符串的形式检索内容。这很快,但如果数据已经被检索(例如存储在内存中),则变化将是即时的,而不是轻微的延迟。我可以将此函数的调用更改为在页面中运行的函数吗?例如,jQueryAutocomplete可以做到这一点(查看源代码)。现在,当您更改操作系统的值时,型号列表将发生更改。如果我在内存中加载了modele,我需要对json字符串进行建模,以包括与操作系统相对应的选项。
换句话说,我可以创建json字符串并将其存储在内存中,然后只引用这些数据,而不是单独调用ajax吗?
function updateModels(i){
var pltfrm = $(i).val();
var firstOption = $(i);
var model = firstOption.parent().next().find('.model');
$.getJSON("index.cfm?do=misc.getModels&platform=" + pltfrm,
function(j){
var options = '';
for (var i = 0; i < j.length; i++)
{
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
model.html(options);
});
}
我的json数据是为LINUX OS:而临时格式化的
[
{"optionValue":"","optionDisplay":"Select a model"},
{"optionValue":"Dell 2850","optionDisplay":"Dell 2850"},
{"optionValue":"Dell 2950","optionDisplay":"Dell 2950"},
{"optionValue":"Dell 2970", "optionDisplay":"Dell 2970"},
{"optionValue":"Dell 6850", "optionDisplay":"Dell 6850"},
{"optionValue":"Dell R710", "optionDisplay":"Dell R710"}
]
这是非常低的优先级,但我知道这将有助于性能,因此如果您有时间并愿意与我合作,我将不胜感激。
当然,只需将数据保存在localStorage:中即可
function updateModels(i){
var pltfrm = $(i).val();
var firstOption = $(i);
var model = firstOption.parent().next().find('.model');
var storedItemSerialized = localStorage.getItem('model' + pltfrm), storedItem = {};
var redrawModels = function (j)
{
var options = '';
for (var i = 0; i < j.length; i++)
{
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
}
model.html(options);
}
if (storedItemSerialized)
{
redrawModels($.parseJSON(storedItemSerialized));
}
else
{
$.getJSON("index.cfm?do=misc.getModels&platform=" + pltfrm,
function(j){
localStorage.setItem('model' + pltfrm, JSON.stringify(j));
redrawModels(j);
});
}
}
此方法还有通过页面请求保存数据的额外好处。