jquery - 带有多个 ajax 调用的 Jquery 回调
问题描述
我有几个函数,我根据来自 ajax 调用的列表填充下拉列表:
function getMissions(defaultId) {
$.getJSON("Defaults/GetMissions", function (result) {
var dropDownToFill = $('#change-mission');
fillUpdateDropDown(dropDownToFill, result);
});
}
function getSectors(defaultId) {
$.getJSON("Defaults/GetSectors", function (result) {
var dropDownToFill = $('#change-sector');
fillUpdateDropDown(dropDownToFill, result);
});
}
现在,在填写下拉列表后,我想选择一个特定的项目,但要获得这个项目,我需要一个其他的 ajax,比如:
function getDefaultDetails(defaultId) {
$.ajax({
type: "GET",
url: "/Defaults/GetDefault",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: { defaultId: defaultId },
success: function (response) {
//code here to select the items from the response
},
});
}
主要功能基本上是:
function main(defaultId){
getMissions(defaultId);
getSectors(defaultId);
getDefaultDetails(defaultId);
}
问题是在完成之前达到了success
回调(下拉菜单可能有很多项目)。getDefaultDetails
fillUpdateDropDown
我试图理解回调,但就我而言,我无法解决我的问题。我尝试过类似的东西:
$.when(getMissions(defaultId), getSectors(defaultId)).done(getDefaultDetails(defaultId));
但没有成功。
如何执行?
谢谢。
解决方案
$.when()
期望thenable对象(Promise、Deferred、Thenable)像$.getJSON()
.
您还必须将 in 调用包装getDefaultDetails()
在.done()
匿名函数中,否则您正在执行该函数并且仅将其返回值 ( undefined
) 用于.done()
function getMissions(defaultId) {
return $.getJSON("Defaults/GetMissions", function (result) {
var dropDownToFill = $('#change-mission');
fillUpdateDropDown(dropDownToFill, result);
});
}
function getSectors(defaultId) {
return $.getJSON("Defaults/GetSectors", function (result) {
var dropDownToFill = $('#change-sector');
fillUpdateDropDown(dropDownToFill, result);
});
}
function getDefaultDetails() { /* ... */ }
$.when(getMissions(defaultId), getSectors(defaultId))
.done(function() { getDefaultDetails(defaultId) });
推荐阅读
- julia - 如何在 julia 中列出所有数据类型或内置/用户定义函数的方法?
- swift - 当我的键在任何地方都匹配时,为什么我会得到这个类与键的键值编码不兼容?
- java - 图像视图拖放
- r - 我如何根据 R 中的过去 7 天计算每日增长率
- java - 试图在java中创建一个正方形但星星不断减半
- java - 在 Spring Security 中编辑用户角色如何修改用户的密码/访问权限?
- c - C - 在函数中将数组引用传递给指针参数时遇到问题
- matlab - 如何找到螺旋矩阵中任意数字与中心之间的步数?
- heroku - 在设置为自定义域时通过 heroku 域访问应用程序
- javascript - 如何将 javascript 中的元素应用于 html 中的多个类名