2010-03-27 85 views
2

我最近发布了另一个问题,用户直接指出我正确的方向。循环浏览JSON数组

$.ajax({ 
     type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, 
     success: function(html){ 
      auth(html); 
      var JSON_array = eval(html); 
      alert(JSON_array[0].username); 
     }       
    }); 

这个正确返回数据,但我想执行一个样“的foreach”的。该阵列包含有关多个传入和传出即时消息的数据。因此,如果用户正在同时与多个人通话,则需要循环。该数组的结构如下。

Array 
(

    [0] => Array 
     (
      [username] => Emmalene 
      [contents] => 
          <ul><li class="name">ACTwebDesigns</li><li class="speech">helllllllo</li></ul> 
          <ul><li class="name">ACTwebDesigns</li><li class="speech">sds</li></ul> 
          <ul><li class="name">ACTwebDesigns</li><li class="speech">Sponge</li><li class="speech">dick</li></ul> 
          <ul><li class="name">ACTwebDesigns</li><li class="speech">arghh</li></ul> 
     ) 

) 

任何帮助非常感谢。

回答

5

嘛,因为你是使用jQuery已经可以使用了each功能:

$.ajax({ 
     type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, 
     success: function(html){ 
      auth(html); 
      var JSON_array = eval(html); 
      $.each(JSON_array, function(index, data) { 
       $('someelement').append(data.contents); 
      }); 
     }       
    }); 
2

相反的评价HTML,你甚至可以指定JSON作为返回类型...

迭代时易使用$.each

$.ajax({ 
    type: "POST", 
    data: ..., 
    url: url, 
    dataType: "json", 
    success: function(data) { 
     $.each(data, function(i, item){ 
      // do something with every item in data 
      // you can reference items in data via 
      // data.fieldName 
     }); 
    } 
}); 

for ... in循环不是更难:

$.ajax({ 
    ..., 
    dataType: "json", 
    success: function(data) { 
     var fields = data.fieldName; 
     var value; 
     for (value in fields) { 
      // do something with value 
     } 
    } 
}); 
+0

不断变得不明确 – 2010-03-27 16:08:46

+0

究竟是在哪一点? JSON是否作为返回类型工作?你有'console.log''ed数据吗? – Leo 2010-03-27 16:09:36

1

只是为了澄清,正如我已经读了很多有用的提示和答案,我只有这一个工作:

$.ajax({ 
    type: 'POST', url: './', data: 'token=' + token + '&re=8', cache: false, timeout: 5000, datatype: 'json', 
    success: function(html){ 
     auth(html); 
     var JSON_array = eval(html); 
     $.each(JSON_array, function(index, data) { 
      var talk_to = JSON_array.username; 
      var contents_to_update = JSON_array.contents; 
     }); 
    }       
}); 

这里面做的工作:

1)使用eval。 2)数据类型:'json' 3)使用jquery的$ .each函数

+0

试验和错误编程?我不明白为什么eval应该是必要的,如果你返回适当的JSON ... – Leo 2010-03-27 16:19:30

+0

非常多。我已经看到json的例子,他们使用eval,所以我试过,它的工作! – 2010-03-27 16:30:09