Извлечение элементов из архива Mailchimp RSS

Я пытаюсь извлечь заголовки и описания из RSS-канала MailChimp с помощью jQuery.

Я пытаюсь:

$.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.

Ответ 1

  • Вам нужно разобрать XML перед запросом с помощью jquery (https://api.jquery.com/jQuery.parseXML)

    var xmlDoc = $.parseXML(xml);
    var $xml = $(xmlDoc);
    $xml.find("item");
    
  • Установите действительный тип данных в xml

Ответ 2

Uncaught SyntaxError: Неожиданный токен < на     http://us10.campaign-archive1.com/feed?u=21a65076da97205b5e5ff33e6&id=cc8bfc765e&callback=jQuery214010618008393794298_1436280190025&_=1436280190026

Вышеупомянутая ошибка вызвана тем, что JSONP требует, чтобы возвращаемые данные были действительными JSON/javascript, а XML не является.

К сожалению, JSONP необходим в вашем случае, поскольку CORS не включен на этом конкретном сервере. (см. CORS для Apache)

В результате вы не можете использовать jQuery только в том случае, если возвращенные данные могут быть изменены на JSON.

Я просто попробовал curl, и, похоже, он работает нормально, нет ошибки 404 для меня, может быть, вам нужно использовать прокси? И убедитесь, что ваша цитата указана, так как символ & обрабатывается специально в оболочке.

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

И если вы собираетесь использовать завиток, было бы несколько вариантов для синтаксического анализа xml, например xmllint, см. Как анализировать XML с помощью 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