我是json的小伙子(知道一些jquery)....并试图让一个小小的脚本工作 我想检索某个纬度/经度的时间 并从我在网上看到的内容中编写了这个脚本:
$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?",
{ 'uID': 1 },
function(data) {
$.each(data, function(i, item) {
$("<span/>").html(item.time).html(".nowtime");
});
});
毋庸置疑,它不起作用......有人可以帮我一把,并解释一下 $( “”)。HTML(item.time)的.html( “nowtime”。); 手段。 (我不明白第一个是什么)
以下是json源参考:http://www.geonames.org/export/web-services.html#timezone
感谢
答案 0 :(得分:3)
我原本认为问题最有可能出现在同源策略中。为了对URL执行AJAX请求,它必须与包含Javascript代码的页面位于同一个域(和端口)中。
但在乔治四世纠正后,我检查了一下。
回调中返回的data
对象是JSON版本的对象,它不是数组。最有可能的是,您的代码应该读取类似的内容:
$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?",
{ 'uID': 1 },
function(data) {
$("<span/>").html(data.time); // Or maybe with a different selector (see below)
}
);
选择器可能也是错误的,例如,您可能希望将结果放在id为test
的div中。在这种情况下,包含选择器的行应更改为:
$("#test").html(data.time);
这就是说,获取标识为test
的对象(井号(#)表示这是一个想法),并使用设置为data.time
的内容更新内容。
答案 1 :(得分:1)
span代码创建一个span元素,然后将其HTML设置为返回的时间值。但是,代码看起来不对,因为它立即将HTML设置为“.nowtime”,但实际上从未将其添加到DOM中。我猜最后的.html('。nowtime')真的应该是.addClass('。nowtime')并且那里应该有一个.appendTo(???),但我不确定你在哪里应该追加它。
修改强>:
另外,我认为你不需要每个功能。它似乎是在迭代数据对象的成员。你想让它直接使用time属性。
示例(但是,您可能希望将其添加到其他位置的DOM):
$(function() {
$.getJSON("http://ws.geonames.org/timezoneJSON?lat=47.01&lng=10.2&callback=?", { 'uID': 1 }, function(data) {
$("<span/>").html(data.time).appendTo('body');
});
});
注意:如果您的JSONP调用要返回一个对象数组然后,您需要使用每个方法迭代它们。我不太了解服务,知道是否有方法可以返回一个对象数组。但是,这个电话不会。
答案 2 :(得分:0)
你不清楚什么是错的。回调似乎是试图获取nowtime字段并将其放在页面上的控件中。我想这个:
$("").html
双引号中应该有一个选择器来告诉它结果的位置。 像$(“#myfield”)....