[英]$.getJSON function executed after everything else
我正在使用以下代码:
function eventListenerTest(event) {
if (document.getElementById('gem_cvo_select_list')) {
var address;
$.getJSON(url, function (data) {
address = data.rows[0];
alert("This gets executed afterwards");
});
alert("This gets executed first");
event.infoWindowHtml = "<b>Address: </b>" + address;
}
}
问题是在infoWindow中使用了“ address”变量后,将执行$ .getJSON函数。 修改代码如下:
function eventListenerTest(event) {
if (document.getElementById('gem_cvo_select_list')) {
var address;
$.getJSON(url, function (data) {
address = data.rows[0];
event.infoWindowHtml = "<b>Address: </b>" + address;
});
}
}
“事件”对象似乎无法通过这种方式访问(“ Google地图”信息窗口中未显示任何内容)。 我认为我应该能够将'event'传递给JSON内部的函数,但是我不知道如何实现这一点。
尝试这个:
function eventListenerTest(event, callback) {
if (document.getElementById('gem_cvo_select_list')) {
var address;
$.getJSON(url, function (data) {
address = data.rows[0];
event.infoWindowHtml = "<b>Address: </b>" + address;
callback();
});
}
}
然后:
eventListenerTest(event, function(){
// you will use updated event object here
});
您应该使用$ .proxy方法来确保所执行的回调函数保留创建Ajax调用的函数的上下文。
更新的Javascript:
function eventListenerTest(event) {
if (document.getElementById('gem_cvo_select_list')) {
var address;
$.getJSON(url, $.proxy(function (data) {
address = data.rows[0];
event.infoWindowHtml = "<b>Address: </b>" + address;
},this));
}
}
详细信息: http : //api.jquery.com/jQuery.proxy/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.