选择Ajax回调

时间:2017-09-14 21:11:24

标签: javascript jquery html jquery-plugins selectize.js

我在页面上的选择性下拉列表通过以下方式从AJAX调用中填充。什么不起作用我需要在callback()方法调用之后立即运行一些额外的代码,但它永远不会继续进入其余的回调。例如,成功回调中的以下内容不会运行标识的其他代码:

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()方法调用之后成功回调中止。

1 个答案:

答案 0 :(得分:0)

load需要两个参数,querycallback

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

您的代码未传递任何这些参数,因此很可能在调用success()时,callback()函数未定义。 我建议把断点检查一下。