我目前有一些 JQuery 代码,我试图确保只有在第一个块中的 AJAX 调用完成后才执行一个代码块。但是,我遇到了一些问题-我尝试使用 JQuery Deferred 方法来执行此操作(下面的代码),但是第一个或第二个代码块都没有运行,所以我认为我走错了路。
我是 Deferred 方法的新手,所以我希望有人能指出我正确的方向,或者指出另一种(也许更好)的方法。
function makeChains(){
$('.chained_to_vehicle_make_selector').remoteChainedTo('.chained_parent_vehicle_make_selector', '/models.json');
$('.chained_to_vehicle_model_selector').remoteChainedTo('.chained_parent_vehicle_model_selector', '/trims.json');
$('.chained_to_vehicle_trim_selector').remoteChainedTo('.chained_parent_vehicle_trim_selector', '/model_years.json');
}
var chainCall = $.Deferred(function() {
makeChains();
});
chainCall.done(function() {
$(".chzn-select").chosen();
$(".chained_parent_vehicle_make_selector").chosen().change( function() {$(".chained_to_vehicle_make_selector").trigger("liszt:updated"); });
$(".chained_parent_vehicle_model_selector").chosen().change( function() {$(".chained_to_vehicle_model_selector").trigger("liszt:updated"); });
$(".chained_parent_vehicle_trim_selector").chosen().change( function() {$(".chained_to_vehicle_trim_selector").trigger("liszt:updated"); });
$(".chained_child").chosen();
});
我也尝试添加chainCall.resolve();
到最后,但无济于事。
有人可以帮忙吗?
编辑:我在这里查看了解决方案:Waiting for jQuery AJAX response(s)这似乎可行,但我认为问题可能是remoteChainedTo
似乎没有内置回调?我是否需要修改代码以添加回调才能使其正常工作,还是 JQuery 能够帮助我?remoteChainedTo 插件getJSON
用于从 url 中提取数据。
编辑 2:对这个问题不太喜欢 - 有什么进一步的想法吗?