选择Ajax回调
问题描述:
我在页面上选择的下拉列表从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()
方法调用后中止。
答
load
需要两个参数query
和callback
。
$('#ContactID').selectize({
....
load : function (query, callback) {
$.ajax({
....
success : function(res) {
callback(res.data);
doOtherThings(res);
}
});
}
});
您的代码没有通过任何这些参数的,所以它是非常有可能的是,当success()
被调用时,callback()
功能是不确定的。 我建议放置断点并检查它。
它没有任何意义。超时0做内部函数异步,所以只有解释是回调函数期间错误/无限循环..这是愚蠢的问题,但你检查控制台? – bigless
@ bigless这是一个非常好的问题,Zamrony是对的,我忘记了一个参数,所以我处理的是未定义的,但由于某种原因被吞噬了,不知道为什么。同样,我并不是在建议'setTimeout'作为答案,但是我注意到并尝试了一些东西...... –