【问题标题】:Retrieve elements from Mailchimp archive RSS从 Mailchimp 存档 RSS 中检索元素
【发布时间】:2015-07-07 14:44:09
【问题描述】:

我正在尝试使用 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 不允许不是来自浏览器的访问,我尝试 curl URL 并得到 404 未找到。

【问题讨论】:

    标签: javascript jquery rss


    【解决方案1】:
    1. 在使用 jquery (https://api.jquery.com/jQuery.parseXML) 查询之前需要先解析 XML

      var xmlDoc = $.parseXML(xml);
      var $xml = $(xmlDoc);
      $xml.find("item");
      
    2. 将有效数据类型设置为xml

    【讨论】:

      【解决方案2】:

      Uncaught SyntaxError: Unexpected token 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,因为字符 &amp; 是在 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-30
        • 1970-01-01
        • 1970-01-01
        • 2014-10-04
        • 2013-05-22
        • 2012-09-19
        • 2012-04-30
        • 2011-07-05
        相关资源
        最近更新 更多