2012-09-20 50 views
3

我正在嘗試從media:content圖像(與其他內容一起)在一個RSS feed每個帖子:http://bits.blogs.nytimes.com/feed/獲取URL:在RSS XML提要內容與jQuery

我試過這個鏈接(連同很多人)jQuery XML parsing how to get element attribute 但我仍然收到錯誤。

還有一個PHP文件(見底部),但我不認爲這是問題。

我嘗試了好幾種變化,我用<img src="undefined" alt="image">

結束了這就是日誌說TypeError: 'undefined' is not an object (evaluating '$item.find('media\\:content').attr('url').text')

這裏是RSS提要的XML的例子(我試圖抓住什麼是在url =「this value」) <media:content url="http://graphics8.nytimes.com/images/2011/11/30/technology/bits-daily-report/bits-daily-report-thumbStandard.jpg" medium="image" width="75" height="75"></media:content>

這是我的HTML與jQuery Embeded。感謝您提供所有解決方案,指針和建議。我現在正在碰到一個障礙。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

<title>Your Site Title</title> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

<script type="text/javascript"> 
$(document).ready(function(){ 

function get_rss_feed() { 

// RSS Feed Var 
var rssUrl = 'http://bits.blogs.nytimes.com/feed/'; 

//clear the content in the div for the next feed. 
$("#feedContent").empty(); 

//use the JQuery get to grab the URL from the selected item, put the results in to an argument for parsing in the inline function called when the feed retrieval is complete 
$.get('rss.php?url='+rssUrl, function(d) { 

    //find each 'item' in the file and parse it 
    $(d).find('item').each(function() { 

     //name the current found item this for this particular loop run 
     var $item = $(this); 
     // grab the post title 
     var title = $item.find('title').text(); 
     // grab the post's URL 
     var link = $item.find('link').text(); 
     // next, the description 
     var description = $item.find('description').text(); 
     //don't forget the pubdate 
     var pubDate = $item.find('pubDate').text(); 
     var media = $item.find('media\\:content').attr('url').text(); 

      // now create a var 'html' to store the markup we're using to output the feed to the browser window 
     var html = "<div class=\"entry\"><h2 class=\"postTitle\">" + title + "<\/h2>"; 
     html += "<em class=\"date\">" + pubDate + "</em>"; 
     html += "<p class=\"description\">" + description + "</p>"; 
     html += "<img src=\"" + media + "\" alt=\"image\"/>"; 
     html += "<a href=\"" + link + "\" target=\"_blank\">Read More >><\/a><\/div>"; 

     //Send Results to a div 
     $('#rss').append($(html)); 
    }); 
}); 

}; 
get_rss_feed(); 

    }); 
</script> 
</head> 

<body> 
<h1>RSS TEST</h1> 
<!-- Your RSS DIV --> 
<div id="rss"></div> 

</body> 
</html> 

這是我的PHP

<?php 

    ob_start(); 

    $curl = curl_init($_GET['url']); 

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HEADER, false); 

    $xml = curl_exec($curl); 
    header("Content-Type: text/xml"); 
    echo $xml; // Results 

    $output = ob_get_clean(); 

    curl_close($curl); 
    echo $output; 

    ob_end_flush(); 


?> 

回答

4

此:

var media = $item.find('media\\:content').attr('url').text(); 

應該是這樣的:

var media = $item.find('media\\:content, content').attr('url'): 

編輯(添加上做了修改):

我改變:

$(d).find('item').each(function() {

要:

$(d).find('item').each(function(index) {

我加了(限制到三個飼料項目):

if (index >= 3) { return false }

我加入(如果沒有將圖像定義爲空白ima GE):

if (typeof mediatest === 'undefined') { var mediatest = 'blank.png' };

一切都很正常......至少到目前爲止:)