2014-08-28 2 views
1

Попытка переноса данных с PHP. Я использую URL-адреса для отображения изображений, а затем я использую теги для изменения порядка массива, который я пытаюсь создать вызываемые данные. Я не уверен, правильно ли разбираюсь.Как JSON анализировать массив нескольких элементов?

var data = []; 

function importJson(str) { 

    if (str == "") { 
     document.getElementById("content").innerHTML = ""; 
     return; 
    } 
    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 


    xmlhttp.onreadystatechange = function() { 

     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 

      data = JSON.parse(xmlhttp.response); 
      alert(xmlhttp.response); 
      alert(data); 

      for (var sport_index = 0; sport_index < data.sport.length; sport_index++) { 
       var url1 = data.sport[sport_index][1]; 
       alert(data.sport); 
      } 
      alert(url1); 
     } 
    } 

    xmlhttp.open("GET", "http://server/~name/folder/many.php"); 
    xmlhttp.responseType = "json"; 
    xmlhttp.send(); 

    function buildImage(imagesrc) { 
     var img = document.createElement('img'); 
     img.src = imagesrc; 
     document.getElementById('content').appendChild(img); 
    } 

} 

xmlhttp.response выглядит следующим образом

{"sport":[{"ImagesId":"34","ImagesPath":"http:\/\/server\/~name\/folder\/images\/24-08-2014-1408868419.png","Tag":"sport"},{"ImagesId":"30","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824125.png","Tag":"sport"}],"clothes":[{"ImagesId":"33","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824179.png","Tag":"clothes"},{"ImagesId":"32","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824166.png","Tag":"clothes"}],"food":[{"ImagesId":"31","ImagesPath":"http:\/\/server\/~name\/folder\/images\/23-08-2014-1408824158.png","Tag":"food"}]} 

Но данные выглядит [object Object] и когда я пытаюсь использовать URLs для создания изображений элементы не определены.

+1

Все правильно, за исключением, что вы должны получить доступ к свойствам объекта по имени, а не индекс. 'var url1 = data.sport [sport_index] [1]' должен быть 'var url1 = data.sport [sport_index] .ImagesPath' –

+0

' JSON.parse() 'должно быть хорошо. Если вы не уверены в выходном объекте, вы можете попытаться отобразить его с помощью 'JSON.stringify()'. –

+0

@cookiemonster ты был прав. – James121

ответ

2

В объекте Javascript, вы получите доступ к элементам по имени, например:

data.sport[sport_index]["ImagesPath"] 

Или

data.sport[sport_index].ImagesPath 
Смежные вопросы