在localStorage中存储和检索动态填充的下拉列表
Store and retrieve the dynamically populated drop-down list in a localStorage
我有一个动态填充的下拉列表。我发送一些ajax请求并获得响应,并根据条件填充下拉框。现在我需要将这些填充的列表存储在localStorage中,因为我需要在页面刷新时显示先前填充的值。
一切正常,除了我只得到下拉列表中填充的最后一个值。不是之前填充的所有值。我需要检索之前填充的所有值。
<index . jsp/strong>
<input type="radio" class="radioButton" value="Display all" checked onclick="fnCheck();"> Display All
<input type="radio" class="radioButton" value="Display Divisions" onclick="fnCheck();"> Display Divisions
<input type="radio" class="radioButton" value="Display Data" onclick="fnCheck();"> Display Data
<select id="convoy_list">
<option>Values</option>
</select>
<input type="button" id="testbtn" value="Test" onclick="fnClickTest();" >
<input type="button" id="ok" value="OK" onclick="fnOK();" >
<input type="button" id="Refresh" value="Refresh" onclick="fnDisplay();"
myjs.js
function test(){
$.ajax({
//some requests and data sent
//get the response back
success:function(responsedata){
for(i=0;i<responsedata.data;i++):
{
var unitID=//some value from the ajax response
if(somecondition)
{
var select=$(#convoy_list);
$('<option>').text(unitID).appendTo(select);
var conArr=[];
conArr=unitID;
test=JSON.stringify(conArr);
localStorage.setItem("test",test);
}
}
}
});
}
在另一个函数中,例如display(),我尝试检索localStorage值
function display(){
if(localStorage.getItem("test")){
var listId=$(JSON.parse(localStorage.getItem("test")));
var select=$(#convoy_list);
$('<option>').text(listId).appendTo(select);
}
如果在下拉列表中填充的数据是实例的C1、C2和C3。刷新页面后,下拉菜单中只填充C3。我希望所有的值即C1 C2 C3在刷新后被填充回来。我怎样才能做到这一点呢?
正如David所说,您正在覆盖localStorage中的项目。您命名的密钥应该始终是唯一的。键的值在每次迭代中都在变化,但键名不变。因此,为了存储它,您需要在每次迭代中使用具有不同名称的键。而不是使用
localStorage.setItem("test",test);
使用
localStorage.setItem("test"+i,test);
这绝对不会覆盖。检索时在display()
中使用这个function display(){
for(var i=0;i<localStorage.length;i++){
if(localStorage.getItem("test"+i)){
var listId=$(JSON.parse(localStorage.getItem("test"+i)));
var select=$(#convoy_list);
$('<option>').text(listId).appendTo(select);
}
}
}
这将在之前填充的下拉列表中添加所有值。
每次迭代都会覆盖本地存储中的项,因为键总是'test'。
您可以将密钥更改为:
localStorage.setItem("test-"+i,test);
这将使它们唯一,并且所有值都将被存储。您可能需要将关键字更改为更具描述性的内容。
或者您只是存储ajax调用的响应,然后创建一个形成下拉列表的函数,该函数可以在ajax成功和显示函数中调用。
相关文章:
- 动态填充两个下拉菜单
- 如何在Highchart中动态填充数据
- 动态填充Bootstrap选择选择器:change event dos'不起作用
- 根据手机上是否存在文件,在jQuery mobile中动态填充列表视图
- 如何在js中实现树结构类型的表单动态填充
- 动态填充复选框
- 无法使用国家/地区选择中的状态动态填充下拉列表
- 动态填充的选择列表
- Jquery Selected plugin - 由 Ajax 动态填充列表
- 在 angularjs 中动态填充的 orderby,不使用输入的第二个变量
- '使用文本区域中的字符串动态填充下拉菜单
- 读取一个动态填充的txt文件
- 动态填充字段的Jquery验证
- 如何使用服务器的JSON响应动态填充dust模板
- 使用jquery动态填充下拉列表
- 如何动态填充DataTables选择菜单
- 使用jquery解析json以构建动态填充的select
- 在AngularJS中动态填充下拉列表
- Jquery Chosen插件-通过Ajax动态填充列表时显示加载图标
- 使用数据库返回的数据动态填充下拉列表