2014-01-28 13 views
-1

Это очень простой процесс, и я получил его работу 2 дня назад, но теперь я не могу узнать, как получить некоторые значения. Я думаю, что моя главная проблема в том, что я не знаю, когда использовать [] или нет, когда loopin массив.получить значения из json data jquery

Я надеюсь, что кто-то может указать мне, в чем моя проблема;

jquery post script;

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 file;

[{\"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 get 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>'); 
      } 
     }); 

Его загрузка файла, но я не могу получить значения из него.

EDIT

Ok так что теперь я не могу получить идентификатор или название или что-то из значков внутри каждой функции ,, я не получаю это

$.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); 
      }); 
+0

удалить ' '\' 'из json, также проверьте свою консоль –

+0

, какие из них я удаляю? –

+0

его вот так теперь, но все еще сейчас работает .. [{"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 "}]}]}} –

ответ

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

Если вы хотите, чтобы каждый идентификатор из него попробовать,

$.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>'); 
    } 
}); 
+0

Спасибо, что это работает! чтобы понять, когда использовать эти скобки, а когда нет: // –

+0

как бы получить идентификатор для каждого значка? >> var iconid = $ (this) .id; это не работает внутри каждой функции –

+0

проверить обновленный ответ –

0

ваш получать массив в результате так что вы должны изменить его к этому:

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

var myicons = jsondata ['myicons']; это похоже на работу (потому что остальная часть jsscript продолжает функционировать после exetuting этого кода, его останавливает, когда я добавляю к нему [0]. Мне нужно снова разобрать, чтобы он работал? –

Смежные вопросы