Междоменный запрос с YQL - PullRequest
       6

Междоменный запрос с YQL

2 голосов
/ 17 ноября 2010

Я пытаюсь использовать API Musicbrainz через javascript. Я обнаружил, что теперь мы можем легко выполнять кроссмейны с YQL.

И я сделал файл jsfiddle, который делает это: http://jsfiddle.net/HBCDF/1/

Проблема с этим фрагментом кода в том, что он не работает, когда HTTP-ответом является XML. У кого-нибудь есть идеи, как я могу изменить фрагмент и получить результат XML?

Грег

Ответы [ 2 ]

2 голосов
/ 17 ноября 2010

Междоменные запросы должны выполняться с использованием jsonp, поскольку обычные ajax-запросы не поддерживают междоменные вызовы. Разница в том, что jsonp не создает настоящий XmlHttpRequest, а добавляет его на свою страницу:

<script type="text/javascript" src="TheCrossDomainUrl"></script>

Если вы попытаетесь извлечь XML таким образом, он потерпит неудачу, так как это недопустимый JavaScript. Я полагаю, что есть несколько способов снять XML без создания XmlHttpRequest (см .: http://ajaxian.com/archives/xml-messages-with-cross-domain-json).

Другой вариант - добавить страницу на стороне сервера, которая будет обрабатывать запрос для вас. Ваша текущая страница отправит обычный запрос XmlHttpRequest на другую страницу в том же домене, эта страница вызовет Musicbrainz, Musicbrainz ответит на вашу серверную страницу, которая отвечает на сценарий на стороне клиента.

0 голосов
/ 20 декабря 2011

Добавить формат = json в URL YQL

var yql = 'http://query.yahooapis.com/v1/public/yql?q=' + encodeURIComponent('select * from html where url="' + site + '"') + '&format=json&callback=?';

И используйте if ( data.query.results != null ) чек

http://jsfiddle.net/HBCDF/3/

...