通过AJAX拉入JSON以填充下拉列表

我正在提取一些会有所不同的JSON数据…例如:

返回的数据可能是:

[{"userID":"2779","UserFullName":" Absolute Pro-Formance"},{"userID":"2780","UserFullName":" AR Fabrication"},{"userID":"2781","UserFullName":" Banda Lucas Design Group"}] 

要么:

 [{"orderID":"112958","OrderName":"Order ID: 112958"},{"orderID":"112957","OrderName":"Order ID: 112957"},{"orderID":"112956","OrderName":"Order ID: 112956"}] 

我试图做的是处理这个JSON来构建一个列表。

 // Load in a drop-down as JSON function LoadDropDown($url, $where, $id, $selectName){ var $loading = '
loading...
'; var $t = Math.round(new Date().getTime() / 1000); var $container = jQuery($where); var options = { url: $url + '?_=' + $t, cache: false, type: 'POST', beforeSend: function(){ $container.html($loading); }, success: function(data, status, jqXhr){ $html = ''; $html += '- Select an Option -'; for(var i = 0; i < data.length-1; ++i) { var item = data[i]; console.log(item.userID); } $html += ''; $container.html('
' + data + '

'); }, complete: function(jqXhr, status){}, error: function(jqXhr, status, error){ $container.slideDown('fast').html('

Danger Will Robinson!
There was an issue pulling in this page. Our support team has been notified, please check back later.

'); } }; jQuery.ajax(options); }

我遇到的问题是……#1 console.log(item.userID); 总是显示undefined ,#2如何有效地动态构建选项? 返回的JSON每row总共包含2个项目, idname

UPDATE

 for(var $key in data){ var $val = data[$key]; for($j in $val){ console.log('name:' + $j + ' = ' + $val[$j]); } } 

在Firefox控制台中显示我需要的内容…但是每行1个项目(例如第1个JSON) name:userID = 1234下一个行name:UserFullName = TheName

我如何获得它们以便我可以构建我的

附:

 for(var k in data) { console.log(k, data[k]); } 

我回来了:

 2955 Object { orderID="8508", OrderName="Order ID: 8508"} 

 2955 Object { userID="1355", UserFulleName="Me Myself And I"} 

您不需要使用这种凌乱的代码。 同样在你的Ajax设置dataType:"json"

 success:function() { var listB=$('#yourdropdownId'); listB.empty(); $.each(result, function (index, item) { listB.append( $('')) }); } 

如果你只想从服务器检索json,那么$ .getJson而不是ajax

 $.getJSON('@Url.Action(" "," ")', { "youparametername": yourdata}, function (data) { $.each(data, function (index, item) { }) }); 

在选项对象内,请务必使用

 dataType: 'json' 

或者在成功处理程序中,您可以使用

 JSON.parse(data) 

Cured:改变我的循环来循环返回JSON中的每个项目,得到他们的密钥等等……

 var $dl = data.length; for(var $i = 0; $i < $dl - 1; ++$i) { var $keys = Object.keys(data[$i]); $html += ''; }