2012-02-17 1 views
2

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

Я использую 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!'); 
      }, 

     }); 

EDIT: Вот выход с сервера

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

Благодаря

+0

Можете ли вы опубликовать ответ, который вы получаете? –

+0

Matt Я отредактировал вопрос, чтобы ответить на сервер. Если ваш вопрос касался jquery, я получаю простую ошибку парсера, ожидаемую, как сказал Кевин – DVD

+0

, вы пробовали «jsonp text xml»? Я считаю, что будет получать контент в виде текста и интерпретироваться jQuery как xml. –

ответ

0

Он просто не представляется возможным, чтобы запросить 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.

+0

Я знаю об этом. Я не могу использовать прокси, потому что я не могу отправить файл cookie auth, так как у меня нет доступа к нему. Теперь мне любопытно, как браузер извлекает данные? Я спрашиваю об этом, потому что, если я запрашиваю url, как правило, я могу видеть данные, не является ли какой-либо способ подражать этому поведению? – DVD

+0

@DVD - Нет, потому что есть проблемы с безопасностью. Браузер специально запрещает вам получать данные из другого домена, если домен не возвращает заголовки CORS. Не могли бы вы просто запросить страницу на своем сервере с помощью ключа auth, а ваш сервер выполнит междоменный HTTP-запрос? –

+0

Я мог бы это сделать, и я, вероятно, с тех пор, как не могу найти другого пути, но идея была всего лишь простым сценарием, который читал данные и показывал информацию красиво, чем исходный xD – DVD

 Смежные вопросы

  • Нет связанных вопросов^_^