2017-09-14 83 views
2

我在頁面上選擇的下拉列表從AJAX調用通過以下方式填充。有什麼不起作用的是我需要在callback()方法調用之後運行一些附加代碼,但它永遠不會持續到回調的其餘部分。舉例來說,在成功回調以下不運行所確定的附加代碼:選擇Ajax回調

var $ddl = $("#ContactID"); 
var control = $ddl[0].selectize; 

control.load(function() { 
    $.ajax({ 
     url: "validURL", 
     type: "post", 
     dataType: "json", 
     data: { 
     id: recordID 
     }, 
     error: function() { 
     alert("Error retrieving data"); 
     callback(); 
     }, 
     success: function (result) { 
     callback(result.data); 
     //Does not get called below 
     loadAdditionalInformation(recordID); 
     } 
    }); 
}); 

但是,如果我這樣做,它的工作原理:

success: function (result) { 
     window.setTimeout(function() { 
      callback(result.data); 
     }, 0); 

     loadAdditionalInformation(recordID); 
} 

我需要調用的方法點列表被加載,所以我不確定我想繼續,因此爲什麼成功回調在callback()方法調用後中止。

+0

它沒有任何意義。超時0做內部函數異步,所以只有解釋是回調函數期間錯誤/無限循環..這是愚蠢的問題,但你檢查控制檯? – bigless

+0

@ bigless這是一個非常好的問題,Zamrony是對的,我忘記了一個參數,所以我處理的是未定義的,但由於某種原因被吞噬了,不知道爲什麼。同樣,我並不是在建議'setTimeout'作爲答案,但是我注意到並嘗試了一些東西...... –

回答

0

load需要兩個參數querycallback

$('#ContactID').selectize({ 
     .... 
     load : function (query, callback) { 
     $.ajax({ 
      .... 
      success : function(res) { 
        callback(res.data); 
        doOtherThings(res); 
      } 
     }); 
     } 
}); 

您的代碼沒有通過任何這些參數的,所以它是非常有可能的是,當success()被調用時,callback()功能是不確定的。 我建議放置斷點並檢查它。