getjson jquery解析数组

时间:2010-04-28 07:34:41

标签: jquery ajax json arrays getjson

简化的阵列工作见下文

跟进要解析的复杂数组,请参阅here


TLDR :想要从数组中获取每个标题并将其插入到div中,而不使用Jquery - getJSON知道div中的内容。

编辑:数据来自一个软件,每隔几秒就会输出一个带有新数据的JSON字符串,所以我需要在“d”中拉出数据数组,如同以下示例。所以我应该得到“标题”&每个人都有“034324324”等。

Edit2 更新了与我完全匹配的代码..

我有JSON数组可以说:

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

我想解析每个“标题”,将其插入div。

尝试

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"}

数组只是一种在不知道数组内部数据的情况下查看数据的方法。

我只是不断添加更多内容。 调试firebug或IE的调试器(Aargh)它会命中

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

然后

38 });

完全跳过

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

- GET请求触发正常并返回正确的JSON字符串。但是现在它不会填充$ .each,或者即使我特意要求某个字符串。 注意上面的Firebug也告诉我它没有格式化为JSON?

将原始JSON字符串更改为更简单的内容。(星期几)以及星期几将加载。所以我到了某个地方。但我需要能够调用更复杂的数组。例如(使用天数)每天都有一个特定的时间我需要显示,同时每天都应该在一个新行上尝试添加“+”&lt; br /&gt;'但这也不起作用。显示在一个数组中,如:

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

我需要拔出Dayname&amp;所有人的时间。

3 个答案:

答案 0 :(得分:2)

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

在此代码中,您最终会将ID为“testfield”的项目的HTML替换为重复值...您可能希望尝试使用jQuery.append将所有条目添加为你已经在上面指定了

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

答案 1 :(得分:1)

您的JSON数据中存在错误:您在最后三项中的“d”后未使用冒号。这是您的应用程序正在使用的实际数据的示例,还是用于演示您的问题的示例数据?

答案 2 :(得分: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>