我正在尝试通过javascript使用Musicbrainz API。我发现我们现在可以使用YQL轻松执行crossmain。
我已经完成了一个jsfiddle文件:http://jsfiddle.net/HBCDF/1/
我对此代码段的问题是,当http响应是XML时,它不起作用。 有没有人知道如何更改代码段并能够获得XML结果?
格雷格
答案 0 :(得分:2)
跨域请求必须使用jsonp完成,因为正常的ajax请求不支持跨域调用。区别在于jsonp没有制作真正的XmlHttpRequest,而是将其添加到您的页面中:
<script type="text/javascript" src="TheCrossDomainUrl"></script>
如果您尝试以这种方式提取XML,它将失败,因为它不是有效的JavaScript。我相信有一些方法可以在不创建XmlHttpRequest的情况下下载XML(参见:http://ajaxian.com/archives/xml-messages-with-cross-domain-json)。
另一种选择是添加一个服务器端页面来代理您的请求。您当前的页面将对同一域中的另一个页面进行正常的XmlHttpRequest,该页面将调用Musicbrainz,Musicbrainz会响应您的服务器端页面,该页面响应客户端脚本。
答案 1 :(得分:0)
将format = json添加到YQL url
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 )
检查