#javascript #jquery #json
#javascript #jquery #json
Вопрос:
Я создаю объект 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? Кажется, я не могу получить какое-либо из значений данных, все они отображаются как неопределенные.
Комментарии:
1. Я думаю, вы вообще не хотите создавать JSON…. Я думаю, вам следует создать объект JavaScript.
2. Кажется, вы перебираете объект JSON для создания другого объекта JSON — могу я спросить, почему?
3. Если бы ваша переменная json была массивом, содержащим два объекта, при ее оповещении () вы бы увидели «[object Object], [object Object]» и все.
Ответ №1:
итак … у вас есть два объекта JSON. Вам нужно заключить их в скобки, чтобы они были в массиве. Тогда вы можете сказать json[0].group:
[{'group': 'test', 'assets': {}}, {'group': 'test2', 'assets': {}}]
Ответ №2:
groupassets
является объектом, а не строкой. Вам придется преобразовать его в строку перед вызовом json.push
Ответ №3:
Вы должны принять ответ.d, возвращенный из вашего веб-сервиса, и привязать его к шаблону. Кажется, вы делаете много ненужных преобразований между ними.
Ответ №4:
Вы создаете массив строк. Вы не можете получить доступ json[0].group
, потому jons[0]
что это строка, а строки не имеют group
атрибута.
Просто добавьте объекты в массив:
json.push({group: value, assets: groupassets})
Как я уже говорил в своем комментарии, вам, вероятно, не нужен JSON, и то, что вы создаете, на самом деле не JSON.