无法迭代 json 对象
2011-10-24
322
我正在使用以下代码构建一个 json 对象:
$.ajax({
type: "POST",
url: "/_layouts/WP/Handler.aspx/GetProductAssets",
data: '{ "productId": "'+productcode+'" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var order = "";
var data = response.d;
var Groups = [];
var json = [];
$.each(data, function(key, value){
if($.inArray(value.AssetType, Groups) == -1){
Groups.push(value.AssetType);
}
});
$.each(Groups, function(key, value){
var groupassets = [];
$.each(data, function(key2, value2){
if(value2.AssetType == value)
groupassets.push(value2);
});
json.push("{'group': '" + value + "', 'assets': " + groupassets + "}");
});
alert(json);
$.get('/common/js/assettemplate.htm', function (template) {
$('body').append(template);
$("#assetTemplate").tmpl(json).appendTo("#support-download-results");
});
},
});
在代码中创建并提醒的 json 对象生成以下内容:
{'group': 'test', 'assets': [object Object]}, {'group': 'test2', 'assets': [object Object]}
当我尝试使用
json[0].group
进行访问时,我得到了
undefined
。我是否没有正确访问或构建此 json 对象?我似乎无法获取数据的任何值,它们都显示为未定义。
3个回答
所以...您有两个 JSON 对象。您需要将它们括在括号中,以便它们位于数组中。然后您可以说 json[0].group:
[{'group': 'test', 'assets': {}}, {'group': 'test2', 'assets': {}}]
frosty
2011-10-24
groupassets
是一个对象,而不是字符串。您必须在调用
json.push
之前将其字符串化。>
Darcy
2011-10-24
您应该获取从 Web 服务返回的 response.d 并将其绑定到模板。您似乎在其中进行了很多不必要的转换。
jbabey
2011-10-24