2012-05-07 37 views
5

Tôi đang cố gắng để chuyển đổi RSS để JSON nhưng khi tôi sử dụng giao diện điều khiển trong Chrome tôi nhận được lỗi nàyChuyển đổi RSS Để JSON

XMLHttpRequest không thể tải http://www.blastcasta.com/feed-to-json.aspx?feedurl=http://www.startalkradio.net/?page_id=354. Không cho phép xuất xứ null bởi Access-Control-Allow-Origin.

jQuery:

$(document).ready(function() { 
    var rss_url = "http://www.blastcasta.com/feed-to-json.aspx?feedurl=http://www.startalkradio.net/?page_id=354"; 

    $.ajax({ 
     type : 'GET', 
     url : rss_url, 
     succces : function(data) { 
      $.each(data.rss, function(i, item) { 
       $("#results").append('<ul>' + item.channel.item.description + '</ul>'); 

      }); 
     }, 
     dataType : 'json', 
     async : true 
    }); 

    function fetchRss(data) { 
     $.each(data.rss, function(i, item) { 
      $("#results").append('<ul>' + item.channel.item.description + '</ul>'); 

     }); 
    } 

}); 

Trả lời

9

CẬP NHẬT: câu trả lời này đề xuất sử dụng API nguồn cấp dữ liệu của Google không được dùng nữa. Các tùy chọn khác bao gồm Superfeedr: Converting RSS to JSON

Lỗi này xảy ra do tệp RSS không có trong máy chủ của bạn, do đó bạn vi phạm Access-Control-Allow-Origin.

Hãy thử plugin này được sử dụng cho các mục đích cross-domain với RSS:

http://jquery-howto.blogspot.com/2009/11/cross-domain-rss-to-json-converter.html

EDIT:

Thư viện download link:

http://code.google.com/p/lomodroid/source/browse/src/functions/jquery.jgfeed.js

sống bản demo với twitter:

http://jsfiddle.net/oscarj24/NbDWb/

sống bản demo với liên kết được sử dụng trong câu hỏi:

http://jsfiddle.net/oscarj24/NbDWb/3/

này sẽ chuyển đổi RSS để JSON

<script src="jquery.js"></script> 
<script src="jquery.jgfeed.js"></script> 
<script> 
$.jGFeed('http://twitter.com/statuses/user_timeline/26767000.rss', 
    function(feeds){ 
    // Check for errors 
    if(!feeds){ 
     // there was an error 
     return false; 
    } 
    // do whatever you want with feeds here 
    for(var i=0; i<feeds.entries.length; i++){ 
     var entry = feeds.entries[i]; 
     // Entry title 
     entry.title; 
    } 
    }, 10); 
</script> 
+0

Tôi có thể 'dường như tìm nguồn cho plugin này –

+0

@atbyrd xem chỉnh sửa của tôi, tôi đã thêm liên kết –

+0

Cảm ơn bạn đã trợ giúp –

1

Vâng về cơ bản nó là thực sự đơn giản. Bạn không thể tải URL đó vì JavaScript/trình duyệt của bạn không cho phép. (Vì cùng một chính sách xuất xứ).

Bạn sẽ phải làm điều đó với một ngôn ngữ kịch bản (như PHP) hoặc một cái gì đó, nhưng không phải bởi JavaScript

Trừ khi bạn có quyền truy cập vào các nguồn (địa điểm RSS) và có thể thêm tiêu đề để cho phép nguồn gốc

0

Google Feeds API có thể làm điều này một cách dễ dàng. Chỉ cần sử dụng định dạng kết quả google.feeds.Feed.JSON_FORMAT. Dưới đây là the docs cho điều đó.

+1

Hãy cẩn thận, API Google Feeds đang tắt. –

+0

Bây giờ tắt hoàn toàn – Shmuel

Các vấn đề liên quan