[英]$.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.