如何遍历json数组

问题描述 投票:1回答:2

我在这里遇到了一个脚本,不确定如何在我设置的div中打印它。我想这与我如何处理响应有关。 chrome devtools的响应如下所示:

{
    "[\"record one\", \"/description\"]": 0
}

我试图使用每个和map来迭代数据,但到目前为止还没有去任何地方。我是js和jquery的新手,所以剧本主要来自阅读和例子。

也许是某种嵌套循环?这是我的代码 -

 $(function() {
  return $('#myslider').slider({
    range: true,
    min: 0,
    max: 20,
    values: [1, 20],
    stop: function(event, ui) {
      var max, min;
      min = ui.values[0];
      max = ui.values[1];
      $('#range').text(min + ' - ' + max);
      $.ajax({
        url: '/dir_scan',
        type: 'get',
        data: {
          min: min,
          max: max
        },
        dataType: 'json',
        success: function(response) {
          var albums;
          albums = response;
          $.each(albums, function(index, obj) {
            var albumname, artist, li_tag;
            li_tag = '';
            albumname = obj.AlbumName;
            artist = obj.Artist;
            li_tag += '<li>Artist: ' + artist + ', Album: ' + albumname + '</li>';
            $('#result').append($(li_tag));
            return console.log;
          });
        }
      });
    }
  });
});
javascript jquery arrays json
2个回答
2
投票

正如威尔在评论中所说,JSON看起来很像。

但是,你正在使用.each的正确轨道,因为它看起来你正在返回一个对象数组。

这是一个做什么的例子:

    var li_tag = '';
    $.each(albums, function(index, obj) {
        var albumname = obj.AlbumName;
        var artist = obj.Artist
        li_tag += '<li>Artist: ' + artist + ', Album: ' + albumname + '</li>';
        $('#result').append($(li_tag));
        return console.log;
    });

此外,“专辑”应设置为成功功能的返回响应。你可能会试图从window.location中解密,从而产生一些头痛的问题。特别是因为json示例看起来格格不入。并且,对于从ajax调用返回的数据所做的任何工作都应该在success函数中进行。


0
投票

以下是迭代如何适用于这种情况。代码中的评论 -

success: function(response) {
  var albums;
   // side issue - but I had to clear the div to get a complete refresh
    $('#result').empty();
      albums = response;
        $.each(albums, function(key, value) {
          var albumname, li_tag, path;
          li_tag = '';
        // I found I had to do this parseJSON call otherwise 
        // I had no correct key/value pair, even though I had set dataType 
        // to JSON
        albumname = jQuery.parseJSON(key);
      path = albumname[1];
    li_tag += '<li ><a href=/album' + encodeURI(albumname[1]) + '>' + albumname[0] + '</a href></li>';
  $('#result').append($(li_tag));
 return console.log;
 });

实际上,代码中的value只是索引号,但我用逗号分隔了实际的键/值对,所以再次parseJSON似乎是唯一可行的方法。尽管尝试了split和substr这样的事情。希望我的回答很清楚,如果不能我编辑。

© www.soinside.com 2019 - 2024. All rights reserved.