如何从其他域获取json数据?

时间:2011-09-04 04:32:21

标签: php javascript jquery json api

我想使用谷歌图片API。在我使用json的过去,我只是使用ajax函数从我自己的服务器获取json。但现在我将从外部域获取它:

https://ajax.googleapis.com/ajax/services/search/images?q=fuzzy monkey&v=1.0

显然我无法使用js加载它,因为它不是来自内部URL。所以在这些情况下,如何使用json数据。你应该使用服务器端脚本通过CURL加载它还是有另一种方式?

2 个答案:

答案 0 :(得分:3)

您可以通过添加callback GET参数来使用JSONP

https://ajax.googleapis.com/ajax/services/search/images?q=fuzzy%20monkey&v=1.0&callback=hello

然后你可以用jQuery $.getJSON()来请求它。

$.getJSON('https://ajax.googleapis.com/ajax/services/search/images?q=fuzzy%20monkey&v=1.0&callback=?', function(response) {
    console.log(response.responseData);
});

jsFiddle

答案 1 :(得分:1)

您必须使用跨源资源共享(CORS http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

它并不像听起来那么复杂......只需适当地设置你的请求标题......在Python中它看起来像:

    self.response.headers.add_header('Access-Control-Allow-Origin', '*');
    self.response.headers.add_header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
    self.response.headers.add_header('Access-Control-Allow-Headers', 'X-Requested-With');
    self.response.headers.add_header('Access-Control-Max-Age', '86400');