【发布时间】:2017-06-19 23:43:44
【问题描述】:
如果包含 .event 类的每个 div 的值已更改,我将使用下面的代码来检索给定位置的纬度和经度。
我遇到的问题是这段代码只出现了两个结果:
- 从一个 JSON 请求返回的值用于每个
lat和lon变量 - 变量
lat和lon保持完全相同,就好像它们保持不变,因此 JSON 值不会被替换。
下面是我正在使用的代码:
$(".button").click(function(){
data = "";
$(".event").each(function(){
original = $(this).find(".address").data("original");
location = $(this).find(".address").html();
lat = $(this).find(".lat").html();
lon = $(this).find(".lon").html();
if (original !== location) {
$.getJSON( "http://nominatim.openstreetmap.org/search?q="+location+"&format=json&polygon=1&addressdetails=1", function(result) {
lat = result[0].lat;
lon = result[0].lon;
});
}
data = data + randomNumber() + ": " + lat + " " + lon + ",";
});
$(".data").val(data);
$(".form").submit();
});
变量data 将包含lat 和lon,每个div 包含event 类。除非用户更改了地址,否则这些值将保持不变,此时将通过 JSON 请求再次检索它们。
然后应该提交表单。
我该如何解决这个问题?谢谢
【问题讨论】:
-
$.getJSON是异步的。你在回调函数执行之前设置data。
标签: javascript jquery json api foreach