我想在圖像上添加點,所以我使用ajax來獲取數據,但在下面的代碼中,我使用map_add_beacon();
來發送請求,我沒事,直到.done(function (beacondata)
,我希望此代碼在data.push({ x: 300, y: 300, text: 'test point1' });
之前執行,但.done(function (beacondata)
真正的執行是在var Taggd = function(element, options, data)
完成後,我該如何讓ajax快速執行?Ajax .done()真正的執行時間?
謝謝!
var Taggd = function(element, options, data) {
var _this = this;
if(options.edit) {
options.handlers =
{
click: function() {
_this.hide();
methods.show.call(this);
}
};
}
this.element = $(element);
this.options = $.extend(true, {}, defaults, options);
this.data = data;
map_add_beacon();
data.push({ x: 300, y: 300, text: 'test point1' });
data.push({ x: 300, y: 400, text: 'test point2' });
this.initialized = true;
if(!this.element.height() || !this.element.width()) {
this.element.on('load', _this.initialize.bind(this));
}
else this.initialize();
};
function map_add_beacon(){
var request = "/maps/map_beacon_assigned?locate_id=1" //access controller of interest
//+ $('#uninstall_brand_id_select').val();
var aj = $.ajax({
url: request,
type: 'get',
beacondata: $(this).serialize()
}).done(function (beacondata) {
insert_beacon(beacondata);//modify the majors' dropdown
}).fail(function (beacondata) {
console.log('AJAX request has FAILED');
});
};
function insert_beacon(beacondata){
for(var i=0;i<beacondata.length;i++){
data.push({ x: beacondata[i][0], y: beacondata[i][1], text: beacondata[i][2] });
};
};
ajax是異步的。您需要在回調完成後按照您在回調中調用insert_beacon()進行推送。 – charlietfl
我無法理解......您能解釋更多嗎?你的意思是我應該在insert_beacon上添加類似.done的函數嗎? – John
完成函數執行時,您提供給ajax函數的url請求已完成 – Hendry