从Mailchimp归档RSS中检索元素

时间:2015-07-07 14:44:10

标签: javascript jquery rss

我试图使用jQuery从MailChimp RSS提要中提取标题和描述。

我正在尝试:

$.ajax({
    type: 'GET',
    url: 'http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e',
    crossDomain: true,
    dataType: 'jsonp',
    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>');
        });
    }
});

但我收到错误:

Uncaught SyntaxError: Unexpected token < on
http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e&callback=jQuery214010618008393794298_1436280190025&_=1436280190026

如果通过jQuery无法实现,还有其他方法吗?我尝试使用Yahoo Developer Console,但robots.txt禁止访问..

似乎mailchimp禁止访问不是来自浏览器,我试图卷曲URL并且我找不到404。

2 个答案:

答案 0 :(得分:2)

  1. 您需要在使用jquery(https://api.jquery.com/jQuery.parseXML

    查询之前解析XML
    var xmlDoc = $.parseXML(xml);
    var $xml = $(xmlDoc);
    $xml.find("item");
    
  2. 将有效数据类型设置为xml

答案 1 :(得分:2)

  

未捕获的SyntaxError:意外的令牌&lt;上       http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e&callback=jQuery214010618008393794298_1436280190025&_=1436280190026

上述错误是由于JSONP要求返回的数据是有效的JSON / javascript,而XML不是。

不幸的是,在您的情况下需要JSONP,因为在此特定服务器上未启用CORS。 (见CORS for Apache

结果是只有在返回的数据可以更改为JSON时才能使用jQuery。

我刚试过curl,它似乎工作正常,对我来说没有404错误,也许你需要使用代理?并确保引用url,因为角色&是在shell中专门处理的。

curl 'http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e'

如果您要使用curl,则可以有多个选项来解析xml,例如xmllint,请参阅How to parse XML using shellscript?

以下是使用xmllint的示例:

xmllint --nocdata --xpath '//item[1]/title/text()' <(curl -s \
  'http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e')

打印出第一个标题:

AVVIO ANNO SCOLASTICO 2015/2016