@Naboska

Как универсально разобрать json в блоки с помощью jquery?

Добрый день.

Есть страничка, которая формироваться видом:

<span data-jsonItem="key1" data-jsonValue="val">error</span>
<span data-jsonItem="key1" data-jsonValue="val2">error</span>
<span data-jsonItem="key2" data-jsonValue="val">error</span>
<span data-jsonItem="key2" data-jsonValue="val2">error</span>


Формирую из json с помощью jquery

function jsonUPDATE() {
  var URL = "/json.json";
  $.getJSON(URL, function(data){
    $.each(data, function (item, value) {   
        var jsonItem = "key1";
        if (item == jsonItem) {
            $.each(value, function (i, object) {
                $.each(object, function (subI, subObject) {
                    $("[data-jsonValue='"+subI+"']").html(subObject);
                });
            });
        }
    });
  });
}


сам json:

{
    "key1": [
        {
            "val": 0, 
            "val2": 0, 
            "val3": 0, 
        }
    ], 
    "key2": [
        {
            "val": 0, 
            "val2": 0, 
            "val3": 0, 
        }
    ]
}


Подскажите, как улучшить скрипт, чтобы универсально получать data-jsonItem из блока html в js и перебирать его в зависимости от существующих в нем ключей?

Сейчас я могу сделать только несколько условий из if (item == jsonItem), приравнивая jsonItem к ключу в json'e.
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 1
frontjs
@frontjs
$(document).ready(function() {
	var result = data['items'];
	var oE = $(""); // ID блока
	if (oE.length == 0) oE = null;
	$.each(data['items'], function(index, value) {
		oE.append($(' ')); // Суда упакуй то что хочешь вывести в html
	});
});


И не забудь в json добавить ключ который будет все эти ключи держать в себе, к примеру items. Данные получать от ключей value.val, value.val2 и т.д.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект