2

我正在尝试通过 javascript 使用 Musicbrainz API。我发现我们现在可以使用 YQL 轻松执行 crossmain。

我已经完成了一个 jsfiddle 文件:http: //jsfiddle.net/HBCDF/1/

我对这个片段的问题是当 http 响应是 XML 时它不起作用。有谁知道我如何更改代码段并获得 XML 结果?

格雷格

4

2 回答 2

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 响应您的服务器端页面,该页面响应客户端脚本。

于 2010-11-17T15:03:33.183 回答
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 )支票

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

于 2011-12-20T11:27:36.530 回答