【问题标题】:get values from json data jquery从 json 数据 jquery 中获取值
【发布时间】:2014-01-28 17:46:51
【问题描述】:

这太容易了,我在 2 天前就开始工作了,但现在我不知道如何获得一些值。我认为我的主要问题是我不知道在循环数组时何时使用 []。

希望有人能指出我的问题;

jquery 后置脚本;

var mydata = JSON.stringify(desktopicons);

            $.post(themeUrl + '/modules/module-save-desktop.php', { 
                data: desktopicons
            }).error(function() {
                $('#desktop').append('<div id="jsoninfo">Failed to save desktop.</div>');
            }).complete( function() {
                $('#desktop').append('<div id="jsoninfo">Desktop for ' + username + ' saved succesfully.</div>');
            });

json 文件;

[{\"myicons\":[{\"icon\":[{\"rel\":\"#\",\"id\":\"icon1\",\"class\":\"bookmark desktop-icon ui-draggable\",\"title\":\"bookmark\"}]},{\"icon\":[{\"rel\":\"#1\",\"id\":\"icon2\",\"class\":\"bookmark desktop-icon ui-draggable\",\"title\":\"bookmark1\"}]}]}]

jQuery 获取 json;

$.ajax({
            type: 'GET',
            url: userDesktopJson,
            async: false,
            dataType: 'json',
            success: function(data){
                var jsondata = $.parseJSON(data);
                $('#desktop').append('<div id="jsoninfo">Data loaded.</div>');
                var myicons = jsondata['myicons'];
                $.each(myicons, function() {
                    alert('found!');
                });


            },  
            error: function() {
                $('#desktop').append('<div id="jsoninfo">Failed to load desktop.</div>');
            }   
        });

它正在加载文件,但我似乎无法从中获取值。

编辑

好的,现在我无法从每个函数内的图标中获取 ID 或标题或其他任何内容,我不明白

$.each(myicons, function() {
                var iconid = this.id;
                var rel = this.rel;
                var title = this.title;
                var iconclass = this.class;

                $('<div />', {
                    'id': iconid,
                }).addClass(iconclass).attr('rel', rel).appendTo('#desktop'); 
                $('<div />', {
                    class: 'icon-title desktop-icon-title'
                }).text(title).appendTo(iconid);
            });

【问题讨论】:

  • 从 json 中删除 '\',同时检查你的控制台
  • 我要删除哪些?
  • 现在是这样,但现在仍在工作.. [{"myicons":[{"icon":[{"rel":"#","id":"icon1","class ":"bookmark desktop-icon ui-draggable","title":"bookmark"}]},{"icon":[{"rel":"#","id":"icon2","class": "bookmark desktop-icon ui-draggable","title":"bookmark"}]}]}]
  • 去掉var jsondata = $.parseJSON(data); 因为你已经加了dataType:'json' 不用再解析了
  • 我得到了这个工作,但我仍然无法从中获得价值 var myicons = jsondata['myicons'];

标签: jquery ajax arrays json loops


【解决方案1】:

删除 var jsondata = $.parseJSON(data); ,因为您已经设置了 dataType:'json'。 然后把var myicons = jsondata['myicons'];改成var myicons = data[0].myicons[0];

$.ajax({
    type: 'GET',
    url: userDesktopJson,
    async: false,
    dataType: 'json',
    success: function(data) {
        $('#desktop').append('<div id="jsoninfo">Data loaded.</div>');
        var myicons = data[0].myicons[0];
        $.each(myicons, function() {
            alert('found!');
        });
    },
    error: function() {
        $('#desktop').append('<div id="jsoninfo">Failed to load desktop.</div>');
    }
});

同时从 json 数据中删除 \

 [{"myicons":[{"icon":[{"rel":"#","id":"icon1","class":"bookmark desktop-icon ui-draggable","title":"bookmark"}]},{"icon":[{"rel":"#","id":"icon2","class":"bo‌​okmark desktop-icon ui-draggable","title":"bookmark"}]}]}]

如果您想从中获取每个 id,请尝试,

$.ajax({
    type: 'GET',
    url: userDesktopJson,
    async: false,
    dataType: 'json',
    success: function(data) {
        $('#desktop').append('<div id="jsoninfo">Data loaded.</div>');
        var myicons = data[0].myicons;
        $.each(myicons, function() {
            console.log(this.icon[0].id);
    });
    },
    error: function() {
        $('#desktop').append('<div id="jsoninfo">Failed to load desktop.</div>');
    }
});

【讨论】:

  • 感谢这项工作!我似乎无法理解何时使用这些括号,何时不使用 ://
  • 如何获取每个图标的 id?>>var iconid = $(this).id;这在每个函数中都不起作用
【解决方案2】:

你得到一个数组,所以你应该把它改成这样:

var myicons = jsondata[0]['myicons'];

【讨论】:

  • var myicons = jsondata['myicons'];这似乎有效(因为在执行此代码后,jsscript 的其余部分继续运行。当我将 [0] 添加到它时它会停止。我需要再次解析它才能工作吗?
猜你喜欢
  • 2013-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
相关资源
最近更新 更多