【发布时间】:2018-02-23 23:30:56
【问题描述】:
我在页面上的选择下拉列表通过以下方式从 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() 方法调用之后成功回调中止。
【问题讨论】:
-
这没有意义。 timeout 0 内部函数是异步的,所以唯一的解释是回调函数期间的错误/无限循环。这是个愚蠢的问题,但你检查过控制台吗?
-
@bigless 这是一个非常好的问题,Zamrony 是对的,我忘记了一个参数,所以我正在处理 undefined,但由于某种原因它被吞了,不知道为什么。同样,我并没有建议
setTimeout作为答案,而是我注意到并尝试过的事情......
标签: javascript jquery html jquery-plugins selectize.js