2010-04-28 2 views
3

Есть упрощенный массив рабочий смотри нижеgetjson JQuery разбор массива

Вслед за сложный массив для разбора см here.


TLDR: Хотите получить каждый заголовок из массива и вставить его в DIV, не зная, что находится внутри DIV с помощью Jquery - getJSON.

Edit: данные поступают из куска программного обеспечения, выводя строковое JSON каждые несколько секунд с новыми данными, так что мне нужно вытащить массив данных в пределах «г», как в приведенном ниже примере. Поэтому я должен получить «Заголовок» & «034324324» и т. Д. Для каждого.

Edit2 Обновленный код, чтобы соответствовать моим точно ..

У меня есть JSON массив позволяет сказать:

{ 
"Days": 
["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] 
} 

И я хочу, чтобы разобрать его как для каждого «название», чтобы вставить его в дела.

Попытка вдоль линий

function getdata() { 
31 $.ajaxSetup ({ cache: false}); //<!-- Stops IE from caching data //--> 
32 
33 $.getJSON(testurl, function(data) { 
34 $.each(data.days, function(i,item){ 
35 $('#testfield').append('<p>' + item + '</p>'); 
36 
37 }); 
38 }); 

безрезультатно.

Я использую Getjson в других местах, но в тех случаях, когда я знаю, какую просьбу я делаю. например:

$('#name').html(data.Projectname); 

Что все работает прекрасно, но в этом случае мне нужно получить детали из массива, не зная, что находится внутри массива, я уверен, есть что-то простое, что я пропавший без вести здесь или делать неправильно ^^.

JSON Я в настоящее время работает с выглядит следующим образом:

{"Projectname":"ertyofhj","Projectid":"aqwertyuqw","Projecttitle":"ertyofhj"} 

Массив был просто способ смотреть вытаскивая данные, не зная, что внутри массива.

Я просто продолжаю добавлять больше. Отладка поджигатель или отладчик в IE (Aargh) он ударил

33 $.getJSON(testurl, function(data) { 

затем

38 }); 

полностью пропуская

34 $.each(data.days, function(i,item){ 

-The GET запрос срабатывает нормально и возвращает правильную строку JSON. Но теперь он не заполнит $ .each, или даже если я специально попрошу определенную строку. На заметку выше Firebug также говорит мне, что он не отформатирован как JSON?

Изменил оригинальную строку JSON на что-то более простое. (Дни недели), как и дни недели. Поэтому я куда-то ухожу.Но мне нужно иметь возможность вызвать более сложный массив. Например, (используя дни) каждый день имеет определенное время на нем, которое мне нужно отображать, а также каждый день должен быть в новой строке, попробовал добавить «+» < br /> ', но это не работает ни . Отображается в виде массива, таких как:.

{"Days": 
["Sunday":"10.00", "Monday":"12.00", "Tuesday":"09.00", "Wednesday":"10.00", "Thursday":"02.00", "Friday":"05.00", "Saturday":"08.00"] 
} 

И мне нужно тянуть DAYNAME & время для всех

+0

Или даже что звучит сложнее, как получить все подробности из строки JSON без массива/зная, что находится внутри это вообще (если это даже по ssible: P) – Sphvn

ответ

2
$.getJSON(url, 
    function(data){ 
     $.each(data.items, function(i,item){ 
     $('#testfield').html('<p>' + item.d.title + '</p>'); 
     }); 
    }); 

В этом коде вы будете в конечном итоге заменять HTML-код элемента идентификатором «testfield» на значение снова и снова ... вы можете попробовать использовать jQuery.append, чтобы добавить все записи, как вы указали выше

$.getJSON(url, 
    function(data){ 
     $.each(data.items, function(i,item){ 
     $('#testfield').append('<p>' + item.d.title + '</p>'); 
     }); 
    }); 
+0

Это имело бы смысл. Но, к сожалению, это по-прежнему не работает для меня: P – Sphvn

+0

Его данные, которые отформатированы неправильно. В приведенном выше примере дат (дни недели, за которыми следует значение) вы неправильно указываете там элементы. Вам понадобится, например, {«Sunday»: «10.00»} и т. Д. Для каждого элемента. См. Дополнительный ответ ниже. –

1

Существует ошибка в ваших данных JSON: вы не используете двоеточие после «г» в последние три пункта. Является ли это примером реальных данных, которые использует ваше приложение, или пример данных для демонстрации вашей проблемы?

+1

Это локальная переменная, используемая в цикле. –

+0

Это был пример, демонстрирующий мою проблему после рабочего, установленного мной с Flickr. из примера. просто вырезать больше, чем строку flickr json. Но да, на этой ноте у них должны быть двоеточия. – Sphvn

+0

Добавлены двоеточия, так как они находятся в «тестовом примере», который я пытаюсь использовать. – Sphvn

1

Хотелось бы надеяться, этот пример будет указывать вам в правильном направлении


<html> 
<head> 
    <title>Stackoverflow</title> 
    // ** POINT THIS TO A VALID jquery.js LOCATION 
    <script src="jquery.js" type="text/javascript"></script> 
    <script> 
    var days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ]; 
    // ***************************************************** 
    // This is your data from getJSON if correctly formatted 
    var data = '{"Days":[ {"Sunday":"10.00"}, {"Monday":"12.00"}, {"Tuesday":"09.00"}, {"Wednesday":"10.00"}, {"Thursday":"02.00"}, {"Friday":"05.00"}, {"Saturday":"08.00"}]}'; 
    runUpdate = function() { 
     // ******************************************************* 
     // Clear the div of all data by replacing it 
     $('#testfield').replaceWith('<div id="testfield"></div>'); 
     var dataObject= $.parseJSON(data); 
     $.each(dataObject.Days, function (index, value) { 
     // ******************************************** 
     // Append new elements to the newly created div 
     $('#testfield').append("<p>"+days[index]+": "+value[ days[index] ]+"</p>"); 
     }); 
    }; 

    runReset = function() { 
     $('#testfield').replaceWith('<div id="testfield">This is original text.</div>'); 
    }; 
    </script> 
</head> 
<body> 
    <div id="testfield"> 
    This is original text. 
    </div> 
    <div> 
    <input type="button" value="Run Update" onclick="runUpdate();" /> 
    <input type="button" value="Reset" onclick="runReset();" /> 
    </div> 
</body> 
</html> 
Смежные вопросы