jQuery和XML-无法读取远程资源

时间:2015-05-19 16:34:46

标签: jquery xml

使用自定义代码获取Feed时,我遇到了xml网址问题。 我试图在谷歌和这里了解哪个解决方案,但我无法理解解决这个问题,所以我需要你的帮助,谢谢。

我得到的错误"跨源请求已阻止:同源策略禁止在http://www.straitstimes.com/news/sport/rss.xml读取远程资源。 (原因:CORS标题' Access-Control-Allow-Origin'缺失)。"

那么,如何为我的代码实现解决方案?

$.ajax({
    type: 'GET',
    url: 'http://www.straitstimes.com/news/sport/rss.xml',
    contentType: "text/xml",
    success: function (xml) {
        $(xml).find("item").each(function () {
            var title = $(this).find("title").text();
            var description = $(this).find("description").text();
            var linkUrl = $(this).find("link_url").text();
            var link = "<a href='" + linkUrl + "' target='_blank'>Read More<a>";
            $('#feedContainer').append('<article><h3>'+title+'</h3><p>'+description+link+'</p>');
        });
    },
        error : function (xhr, ajaxOptions, thrownError){  
        console.log(xhr.status);          
        console.log(thrownError);
     }
});

1 个答案:

答案 0 :(得分:1)

使用YQL控制台我们可以克服这个跨源请求...只需更改URL并删除co​​ntentType ..查看此jsfiddle链接

http://jsfiddle.net/1rmk8z4k/

$.ajax({
type: 'GET',
url: 'http://query.yahooapis.com/v1/public/yql?q=select * from xml where url ="http://www.thestar.com.my/RSS/News/Education/"',

success: function (xml) {
    $(xml).find("item").each(function () {
        var title = $(this).find("title").text();
        var description = $(this).find("description").text();
        var linkUrl = $(this).find("link_url").text();
        var link = "<a href='" + linkUrl + "' target='_blank'>Read More<a>";
        $('#feedContainer').append('<article><h3>'+title+'</h3><p>'+description+link+'</p>');
    });
},
    error : function (xhr, ajaxOptions, thrownError){  
    console.log(xhr.status);          
    console.log(thrownError);
 }
});