2016-05-19 12 views
2

Wenn ich von einer RSS-Daten-Schleife loop möchte ich den URL-Wert aus einem Objekt extrahieren. HierWie kann ich auf den Wert von einem Objekt innerhalb eines Arrays zugreifen

$.ajax({ 
url  : 'http://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=30&callback=?&q=' + encodeURIComponent('http://www.dnoticias.pt/rss/actualidade/geral'), 
dataType : 'json', 
success : function (data) { 
    if (data.responseData.feed && data.responseData.feed.entries) { 
    $.each(data.responseData.feed.entries, function (i, e) { 

    title = e.title; 
    description = e.description; 
    category = e.categories[0]; 
    media = e.mediaGroups; 
    console.log(media); 
    } 
    } 
}); 

ist die Ausgabe von dem Konsolenprotokoll:

mediaGroups: Array[1] 
0: Object 
    contents: Array[1] 
    0: Object 
    type: "image/jpeg" 
    url: "http://...." 

Dank

+0

könnten Sie versuchen, console.log zu bekommen (media.mediaGroups.contents.url); –

+0

könnten Sie versuchen, console.log zu erhalten (media.mediaGroups [0] .contents [0] .url); – Avinash

+0

Sagt: TypeError: Medien ist undefined – nunof

Antwort

1

Aus Die von Ihnen angezeigte Ausgabe mediaGroups ist ein Array von Objekten, die selbst eine 0 enthaltenEigenschaft, die ein anderes Array von Objekten ist, also müssen Sie verschachtelte Schleifen verwenden, um jede url-Eigenschaft aus diesen Objekten herauszuziehen.

$.each(data.responseData.feed.entries, function(_, entry) { 
    $.each(entry.mediaGroups, function(_, mediaGroup) { 
     $.each(mediaGroup.contents, function(_, content) { 
      var url = content.url; 
      // use url as required here... 
     }); 
    }); 
}); 

Wenn Sie immer immer nur das erste Element aus dem Array abgerufen werden sollen, und können garantieren, dass jedes Array Kind mindestens ein Element enthält, dann können Sie sie einfach wie dies durch den Index zugreifen:

$.each(data.responseData.feed.entries, function (i, entry) { 
    var url = entry.mediaGroups[0].contents[0].url; 
    // use url as required here... 
}); 

Working example

+0

Es könnte sein, dass Sie mehrere falsche Klammern und geschweifte Klammern in Ihrem Code haben. Ich habe meiner Antwort ein Arbeitsbeispiel für Sie hinzugefügt. –

+0

Danke, es hat funktioniert! – nunof

+0

Kein Problem, froh zu helfen. –

0

Sie nur Zugriff Array-Elemente durch Indexierung und Eigentum von Eigenschaftsnamen:

e.mediaGroups[0].contents[0].type 
0

wenn die Arrays nur ein Element haben, dann ist es so einfach wie diese:

media = e.mediaGroups[0]; 
contents = media.contents[0]; 

dann können Sie somehting wie folgt tun:

someVar1 = contents.type; 
someVar2 = contents.url; 

sonst werden Sie durch mediaGroups und durch contents laufen müssen auch

+0

scheint, als ob die Fehler durch die "mehrere nicht passende Klammern und Klammern in Ihrem Code" verursacht wurden, wie Rory erwähnt, dennoch bin ich froh, dass Sie die Hilfe haben, die Sie benötigten. – zedling