Получение межсайтового XML-ответа с помощью jquery - PullRequest
2 голосов
/ 17 февраля 2012

Я пытаюсь получить некоторую информацию XML от службы, которая не принадлежит мне. По сути, пользователь будет проходить аутентификацию в другом сервисе, и мой сценарий должен получить информацию, используя cookie-файл для аутентификации через кросс-сайт.

Я использую jquery для этого, и я вижу, что ответ, который я хочу обработать, возвращается службой (через firebug), дело в том, что я использую jsonp для вызова, поэтому jquery возвращает ошибка синтаксического анализа.

Я перепробовал все решения, с которыми сталкивался, для выполнения таких операций, например, YQL и прокси-сервер.

Мое разочарование здесь в том, что я вижу желаемый ответ, но jquery просто не дает мне необработанную информацию.

Я знаю, что я вызываю функцию, которая ожидает ответ json, но разве это не обходной путь или другой способ? как xmlp xD.

$.ajax(
        {
            url: "serviceurl",

            dataType: 'jsonp', //I've tried 'jsonp xml'


            crossDomain: true,
            xhrFields: {
                withCredentials: true
            },
            success: function()
            {
                alert('Load was performed.');
            },

            error: function(jqxhr,error) 
            { 
                alert('Failed!'); 
            },

        });

РЕДАКТИРОВАТЬ: Вот вывод с сервера

<User>
 DVD_PT
</User>
<Apps>
 <App>
   <name>Last.fm Scrobbler</name>
 </App>
</Apps>

Спасибо

1 Ответ

0 голосов
/ 17 февраля 2012

Просто невозможно запросить XML из междоменного источника, если другой домен не поддерживает CORS.

Вы должны использовать какой-то прокси, такой как YQL, как вы уже упоминали.

Ответ, который вы видите, устанавливая тип данных JSONP, находится внутри тега <script>. Например, вы получаете это:

<script src="http://example.com/note.xml"></script>

где note.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

, что, конечно, вызовет ошибку, потому что это недопустимый JavaScript.

...