【发布时间】:2014-04-08 15:37:15
【问题描述】:
我正在提取一些会有所不同的 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 来构建一个<select> 列表。
// Load in a drop-down as JSON
function LoadDropDown($url, $where, $id, $selectName){
var $loading = '<div class="pageLoader" style="margin:0 auto !important;padding:0 !important;"><img src="/assets/images/ajax-loader.gif" alt="loading..." height="11" width="16" /></div>';
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 = '<select class="form-control" id="'+$selectName+'" name="'+$selectName+'">';
$html += '<option value="0">- Select an Option -</option>';
for(var i = 0; i < data.length-1; ++i) {
var item = data[i];
console.log(item.userID);
}
$html += '</select>';
$container.html('<pre>' + data + '</pre>');
},
complete: function(jqXhr, status){},
error: function(jqXhr, status, error){
$container.slideDown('fast').html('<div class="alert alert-danger alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><i class="fa fa-exclamation-triangle fa-4x pull-left"></i><p><strong>Danger Will Robinson!</strong><br />There was an issue pulling in this page. Our support team has been notified, please check back later.</p></div>');
}
};
jQuery.ajax(options);
}
我遇到的问题是... #1 console.log(item.userID); 总是显示 undefined,而 #2 我怎样才能有效地动态构建选项?返回的 JSON 将始终包含每个 row 和 id 的 2 个项目,以及一个 name
更新
for(var $key in data){
var $val = data[$key];
for($j in $val){
console.log('name:' + $j + ' = ' + $val[$j]);
}
}
在 Firefox 控制台中向我展示了我需要什么...但是每行 1 项,每个(例如第一个 JSON)name:userID = 1234 下一行 name:UserFullName = TheName
我怎样才能得到它们以便我可以构建我的<options>?
与:
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"}
【问题讨论】:
-
将 dataType:"json" 放入 ajax 设置中。
-
在你的选项中设置dataType选项为json,默认是text/html所以你的数据只是一个字符串
-
这些是答案,不是 cmets。随意发布并获得一些代表!
-
我在发布问题 LOL 后做了。但并没有真正回答真正的问题,所以可能想重新审视......由于返回的 JSON 将始终包含每个元素的 2 个对象,因此每次拉取的元素名称可能不同......换句话说,我可能永远不会知道返回的对象的
names -
然后你可以使用文本和值见stackoverflow.com/questions/22928756/…
标签: javascript php jquery ajax json