2014-02-10 3 views
1

Я пытался читать RSS-канал от внешнего веб-сайта с помощью следующего кода:Как камыша RSS-каналы с JQuery мобильного

$.get('http://myrssurl.com',function (XMLmediaArray) { 
    $(XMLmediaArray).find('item').each(function() { 
    var item = $(this); 
    var title = item.find('title').text(); 
    var description = item.find('description').text(); 
    var link = item.find('link').text(); 
    var image = item.find('enclosure[type="image/jpeg"]').attr('url'); 
    }); 
}); 

я получил сообщение об ошибке, в котором говорится:

XMLHttpRequest cannot load http://myrssurl.com. No '*Access-Control-Allow-Origin*' header is present on the requested resource. Origin 'localhost is therefore not allowed access. 

Do вы знаете, как это решить?

Благодарим за помощь! в это время я пытался использовать службу FEED GOOGLE RSS, но я также приходится иметь дело с проблемой, с помощью этого:

в HTML файл, я использую это:

<script type="text/javascript"> 
new rssdisplayer("msndiv","http://www.myrssfeedurl",6,"date, description"); 
</script> 

и в Javascript подать последующие:

google.load("feeds", "1"); //Load Google Ajax Feed API (version 1) 

function rssdisplayer(divid, url, feedlimit, showoptions){ 
this.showoptions=showoptions || "" //get string of options to show ("date" and/or "description"wink 
var feedpointer=new google.feeds.Feed(url) //create new instance of Google Ajax Feed API 
feedpointer.setNumEntries(feedlimit) //set number of items to display 
document.write('<div id="'+divid+'">Loading feed, </div>') 
this.feedcontainer=document.getElementById(divid) 
var displayer=this 
feedpointer.load(function(r){displayer.formatoutput(r)}) //call Feed.load() to retrieve and output RSS feed 
} 


rssdisplayer.prototype.formatdate=function(datestr){ 
var itemdate=new Date(datestr) 
return "<span style='color:gray; font-size: 90%'>"+itemdate.toLocaleString()+"</span>" 
} 


rssdisplayer.prototype.formatoutput=function(result){ 
if (!result.error){ //if RSS feed successfully fetched 
var thefeeds=result.feed.entries //get all feed entries as a JSON array 
var rssoutput="<ul>" 
for (var i=0; i<thefeeds.length; i++){ //loop through entries 
var itemtitle="<a href=\"" + thefeeds[i].link + "\">" + thefeeds[i].title + "</a>" 
var itemdate=/date/i.test(this.showoptions)? this.formatdate(thefeeds[i].publishedDate) : "" 
var itemdescription=/description/i.test(this.showoptions)? "<br />"+thefeeds[i].content : "" 
rssoutput+="<li>" + itemtitle + " " + itemdate + itemdescription + "</li>" 
} 
rssoutput+="</ul>" 
this.feedcontainer.innerHTML=rssoutput 
} 
else //else, output error 
alert("Error fetching feeds: "+result.error.message) 
} 

но когда я исполню ее в браузере, я получаю сообщение об ошибке: Uncaught ReferenceError: rssdisplayer не определен (индекс): 127 (анонимная функция)

Вы, ребята, знаете, в чем проблема?

ответ

1

Это гарантия AJAX: https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS Вам не разрешено запрашивать другие сайты.

Я бы рекомендовал разобрать RSS-канал на вашем сервере и переформатировать его в JSON для удобства.

+0

Вы также можете воспользоваться сервисом вроде Superfeedr, который поддерживает JSONP (http://blog.superfeedr.com/jquery-superfeedr/) :) –

0

Я решил это с помощью службы RSS-сообщений Google API. Ошибка возникла из-за того, что файл rssdisplayer.js был включен слишком поздно в html-файл. Включите его непосредственно после jquery mobile javascript

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