Jquery getJSON:为什么1个示例有效,而另一个不有效?
我有两个函数示例,用于检索json数据并发出警报 在本例中,一切正常: 但在第二个示例中,没有显示警报。 为什么?唯一的区别是检索json的服务。json对象在我看来非常有效: 我没有JS错误。我也试过这个本地的(所以不是在JSbin上,而是在我的pc上有一个htm文件),但这也不起作用Jquery getJSON:为什么1个示例有效,而另一个不有效?,jquery,json,Jquery,Json,我有两个函数示例,用于检索json数据并发出警报 在本例中,一切正常: 但在第二个示例中,没有显示警报。 为什么?唯一的区别是检索json的服务。json对象在我看来非常有效: 我没有JS错误。我也试过这个本地的(所以不是在JSbin上,而是在我的pc上有一个htm文件),但这也不起作用 有人能解释一下我做错了什么吗?您使用的URL不在您的域内,这意味着$。getJSON不会使用XmlHttpRequest,而是一些JSONP--请参阅: 如果指定的URL位于远程服务器上 服务器,请求被视为 而
有人能解释一下我做错了什么吗?您使用的URL不在您的域内,这意味着
$。getJSON
不会使用XmlHttpRequest,而是一些JSONP--请参阅:
如果指定的URL位于远程服务器上
服务器,请求被视为
而是JSONP。参见对
的$.ajax()
中的jsonp数据类型
更多细节
如果您查看的
jsonp
选项的文档,您将看到:
重写中的回调函数名
jsonp请求。此值将为
在中使用,而不是“回调”
“callback=?”是查询字符串的一部分
在GET的url或
邮递所以{jsonp:'onJsonPLoad'}会
“onJsonPLoad=?”中的结果传递给
服务器
对于jsonpCallback
选项:
指定的回调函数名
jsonp请求。此值将为
用于代替随机名称
由jQuery自动生成
对于第一个请求,URL中有一个jsoncallback
参数;对于第二个请求,没有此类参数:
- 第一个URL:
http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?
- 第二个URL:
http://json-time.appspot.com/time.json?tz=Europe/Brussels
我想这与第二个请求不能满足您的要求有关?您使用的URL不在您的域内,这意味着
$。getJSON
不会使用XmlHttpRequest
,而是一些JSONP
——请参阅$.getJSON的文档:
如果指定的URL位于远程服务器上,则该请求将被视为
而是JSONP。请参阅$.ajax()中对jsonp数据类型的讨论
更多细节
如果您查看一下$.ajax的jsonp选项文档,您将看到:
重写jsonp请求中的回调函数名。此值
将在函数的“callback=?”部分中使用而不是“callback”
url中的GET查询字符串或POST数据。所以
{jsonp:'onJsonPLoad'}将导致将'onJsonPLoad=?'传递给
服务器
对于jsonpCallback选项:我在第二个url中添加了
&callback=?
,现在它工作得非常好。感谢您的确认:-)(我没有尝试;很高兴知道它能工作!)
$(document).ready(function(){
var timeService = "http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?";
$.getJSON(timeService, function(data) {
alert(data);
});
});
$(document).ready(function(){
var timeService = "http://json-time.appspot.com/time.json?tz=Europe/Brussels";
$.getJSON(timeService, function(data) {
alert(data);
});
});