JSONP回调失败,需要javascript / jquery的帮助

我是json的一个菜鸟(知道一点jquery)….并且试图让一个小小的脚本工作我想要检索某个lat / lng的时间并​​从我的位置编写这个脚本在线阅读:

$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", { 'uID': 1 }, function(data) { $.each(data, function(i, item) { $("").html(item.time).html(".nowtime"); }); }); 

毋庸置疑,它不起作用……有人可以帮我一把,也解释一下$(“”)。html(item.time).html(“。nowtime”); 手段。 (我不明白第一个是什么)

这是json源参考: http : //www.geonames.org/export/web-services.html#timezone

谢谢

我原本以为这个问题最有可能出现在同一个原始政策中 。 为了对URL执行AJAX请求,它必须与包含Javascript代码的页面位于同一个域(和端口)中。

但在乔治四世纠正之后,我检查了一下。

回调中返回的data对象是JSON-evaled对象,它不是数组。 最有可能的是,您的代码应该是这样的:

 $.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", { 'uID': 1 }, function(data) { $("").html(data.time); // Or maybe with a different selector (see below) } ); 

选择器可能也是错误的,例如,您可能希望将结果放在id为test的div中。 在这种情况下,包含选择器的行应更改为:

 $("#test").html(data.time); 

这就是说,获取具有id test的对象(哈希符号(#)表示它是一个想法),并使用任何data.time设置为更新内容。

span代码创建一个span元素,然后将其HTML设置为返回的时间值。 但是,代码看起来不对,因为它立即将HTML设置为“.nowtime”,但实际上从未将其添加到DOM中。 我猜最后的.html(’。nowtime’)真的应该是.addClass(’。nowtime’)并且那里应该有一个.appendTo(???),但我不确定你在哪里应该追加它。

编辑

另外,我认为你不需要每个function。 它似乎在迭代数据对象的成员。 你想让它直接使用time属性。

示例(但是,您可能希望将其添加到其他位置的DOM):

 $(function() { $.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", { 'uID': 1 }, function(data) { $("").html(data.time).appendTo('body'); }); }); 

注意:如果您的JSONP调用是返回一个对象数组, 那么您需要使用每个方法迭代它们。 我不太了解服务,知道是否有返回对象数组的方法。 但是这个电话不会。

你不清楚什么是错的。 回调似乎是试图获取nowtime字段并将其放在页面上的控件中。 我认为这:

 $("").html 

应该在双引号中有一个选择器来告诉它结果在哪里。 像$(“#myfield”)……