jquery – 使用JSON数据填充下拉菜单

前端之家收集整理的这篇文章主要介绍了jquery – 使用JSON数据填充下拉菜单前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用AJAX来根据另一个下拉列表的选择来填充下拉框.我使用位于此处的jQuery( http://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax/)跟踪了一个教程,并更改了脚本中选择框名称中的选择框ID名称.

当主复选框的值发生变化时,发送ajax并返回如下:

{"1":"Kieran Hutchinson","2":"Caleb Tan","3":""}

这与教程代码中返回的JSON字符串略有不同,如下所示

[{optionValue:10,optionDisplay: 'Remy'},{optionValue:11,optionDisplay: 'Arif'},{optionValue:12,optionDisplay: 'JC'}]

我认为这是问题,但我不知道如何从我的JSON响应中获取正确的值.

javascript如下:

$(function(){
            $("select#ContactCompanyId").change(function(){
              $.getJSON("contactList",{id: $(this).val(),ajax: 'true'},function(j){
                var options = '';
                for (var i = 0; i < j.length; i++) {
                  options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';
            }
                $("select#QuoteContactId").html(options);
                })
            })
        })

提前致谢

解决方法

你的问题是这一行:
options += '<option value="' + j[i].optionValue + '">' + j[i].optionDisplay + '</option>';

期待以教程格式发送的数据.你的格式不同.尝试:

options += '<option value="' + i + '">' + j[i] + '</option>';

您将’value’仅作为索引 – i,并将值作为具有该键的值j [i].所以你最终得到的选项标签看起来像这样:

<option value="1">Kieran Hutchinson</option>

要解释更多:原始数据的格式如下:

// The tutorial data
array[0]['optionValue'] = 10;
array[0]['optionDisplay'] = 'Remy';

// Your data
array[1] = 'Kieran Hutchinson';

另外,如果这是您的示例中返回的实际数据,则(var i = 0; i< j.length; i)的迭代器将失败,因为您没有从索引0开始.用于(i in j ){...}

猜你在找的jQuery相关文章