2

我有一个带有多个下拉列表的表单

<select id="0" name ="0">
<option value="abc">ABC</option>
<option value="def">DEF</option>
.
.
.
<option value="mno">MNO</option>
</select>
.
.
.
<select id="9" name="9">
<option value="abc">ABC</option>
<option value="def">DEF</option>
. 
.
.
<option value="mno">MNO</option>
</select>

// 这是代码的基本结构

现在我有一个 ajax 调用,它提供以下 json 数据

{"2":"abc","5":"def","6":"ghi","7":"def","4":"mno"}

我想根据 json 数据填充下拉列表

例如,对于这种情况,id 为 2 的下拉菜单显示选项值为 abc,od 为 5 的下拉菜单应选择其值为 def 的选项,依此类推。

 $.ajax({
        type : 'POST',
        url : ajax_url,
        data : datavar,

        success : function(msg) {

        }
        });

json 数据存在于成功的 msg 参数中。

我应该如何进行?

4

2 回答 2

1

或者,如果您想保留全部 jquery,请这样做:)

$.ajax({
    type : 'POST',
    url : ajax_url,
    data : datavar,

    success : function(msg) {
      $.each(msg, function(k, v){
         $('#'+k).val(v);
      });
    }
});

这将遍历每个返回的对象属性并使用 k(键)来查找选择并分配选定的值 (v)。

你也可以这样做:

for(var key in msg){
    if(msg.hasOwnProperty(key)){
        $('#'+key).val(msg[key]);
    }
}

您只需要确保修复选择框的值属性。现在他们缺少尾随 value="ABC(") ...这会导致问题

于 2013-09-06T19:00:49.537 回答
0

由于您使用的是 AJAX 和 JQUERY,这就是我将如何完成您的壮举:

for(var i = 0; i <= msg.length; i+=2) {
    $('#' + msg[i]).val(msg[i+1]);
}

这将获取 JSON 数据中的第一项,即选择框 ID,并将其值设置为第二个 JSON 数据。实际上,它告诉下拉框在包含该值的 OPTION 上设置 SELECTED="SELECTED"。

对不起,如果这不是那么清楚!

于 2013-09-06T18:54:43.610 回答