我有一个函数示例,它检索json数据并发出警报.
在这个例子中,一切都很顺利:http://jsbin.com/uwupa3/edit
$(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);
});
});
Run Code Online (Sandbox Code Playgroud)
但在第二个示例中,没有显示警报.为什么?唯一的区别是检索json的服务.json-object对我来说看起来非常有用:http://jsbin.com/uwupa3/2/edit
$(document).ready(function(){
var timeService = "http://json-time.appspot.com/time.json?tz=Europe/Brussels";
$.getJSON(timeService, function(data) {
alert(data);
});
});
Run Code Online (Sandbox Code Playgroud)
我没有JS错误.我也试过这个本地(所以不是在JSbin上,但在我的电脑上有一个htm文件),这也不起作用.
谁能解释我做错了什么?
您正在使用域外的URL,这意味着$.getJSON不会使用XmlHttpRequest,而是使用一些JSONP - 请参阅以下文档$.getJSON:
如果指定的URL位于远程服务器上,则该请求将被视为JSONP.有关
$.ajax()更多详细信息,请参阅jsonp数据类型的讨论.
如果您查看该jsonp选项的文档$.ajax,您将看到:
覆盖jsonp请求中的回调函数名称.在'callback =?'中将使用此值代替'callback' GET的url中的查询字符串的一部分或POST的数据.所以{jsonp:'onJsonPLoad'}会导致'onJsonPLoad =?' 传递给服务器.
对于jsonpCallback选项:
指定jsonp请求的回调函数名称.将使用此值代替jQuery自动生成的随机名称.
对于您的第一个请求,jsoncallbackURL中有一个参数; 对于您的第二个请求,没有这样的参数:
http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?http://json-time.appspot.com/time.json?tz=Europe/Brussels我想这与第二个请求没有做你想要的事实有关?
| 归档时间: |
|
| 查看次数: |
10764 次 |
| 最近记录: |