iTunes Search API不想给我它的数据

问题描述 投票:0回答:3

我在iTunes Search API上遇到了一些麻烦。当我通过URL(即http://itunes.apple.com/search?term=Reeder&country=fr&entity=software)直接访问数据时,我可以看到数据,但是当我通过简单的脚本尝试时,数据将无法加载。

var xhr = new XMLHttpRequest();

xhr.open('GET', 'http://itunes.apple.com/search?term=Reeder&country=fr&entity=software');
xhr.send();

xhr.addEventListener('readystatechange', function () {
    if (xhr.readyState === xhr.DONE && xhr.status === 200) {
        alert(xhr.responseText);
    }
}, false);

有人知道发生了什么吗?

javascript xmlhttprequest itunes
3个回答
1
投票

正如其他人所说,您的请求违反了相同的原始政策。

我不久前遇到过这个问题并使用YQL创建了一个JSONP回调(在javascript函数中包装数据)。换句话说,脚本标记不受同源策略的约束

YQL:http://developer.yahoo.com/yql/ JSONP:http://en.wikipedia.org/wiki/JSONP(我假设你知道JSON)

您可以自己学习详细信息(如何使用JSONP),所以我只举几个例子。

您的YQL查询将是select * from json where url='http://itunes.apple.com/search?term=Reeder&country=fr&entity=software'。如果将类型更改为JSON(在控制台中),则可以为JSONP指定回调。控制台:http://developer.yahoo.com/yql/console Link

您创建一个脚本标记并将上面的链接/ URL设置为源。如您所见,JSON数据包含一个函数名称。您应该已经定义了回调函数,该函数将在加载YQL / JSON源时调用。然后该回调函数处理JSON数据。


0
投票

这是浏览器的安全功能......您无法使用AJAX访问存储在其他域下的内容。谷歌“跨域AJAX请求”


0
投票

您的要求违反了same origin policy

简而言之,你不能对不同的域进行ajax调用。您可以使用服务器端语言(如php,java,nodejs或其他)的http请求来完成此操作。

热门问题
推荐问题
最新问题