JQuery:在.change上未正确调用第二个函数

JQuery:在.change上未正确调用第二个函数,jquery,Jquery,我正在开发一个Django应用程序,它的表单有3个字段:部门,省,地区(还有更多,但问题在于这3个字段) 所以,当用户更改所选的部门选项时,应该调用后端来检索省和区 当用户改变省份时,也应该发生同样的情况,必须调用后端来检索相应的地区 为了实现这一点,我有两个函数可以正确地完成这项工作:get\u provides(),get\u districts() 我的问题:如何确保在更换部门时调用第二个函数,即get_districts() 代码: 函数get_/){ var val_d=$(“#id

我正在开发一个Django应用程序,它的表单有3个字段:
部门
地区
(还有更多,但问题在于这3个字段)

所以,当用户更改所选的部门选项时,应该调用后端来检索省和区

当用户改变省份时,也应该发生同样的情况,必须调用后端来检索相应的地区

为了实现这一点,我有两个函数可以正确地完成这项工作:
get\u provides()
get\u districts()

我的问题:如何确保在更换部门时调用第二个函数,即
get_districts()

代码:

函数get_/){
var val_d=$(“#id_航运部门”).val()
$.ajax({
url:“/province/”,
数据:{//在单独的对象中传递参数
d_名称:val_d
},
}).完成(功能(结果){
$(“#id#u shipping_province”).html(结果);
});
}
函数get_districts(){
var val_d=$(“#id_航运部门”).val()
var val_p=$(“#id_shipping_province”).val()
$.ajax({
网址:“/district/”,
数据:{//在单独的对象中传递参数
d_名称:val_d,
p_名称:val_p
},
}).完成(功能(结果){
$(“#id#u shipping_district”).html(结果);
});
}
$(“文档”).ready(函数(){
$(“#id#U运输部门”)。更改(功能(){
获得省();
得到你的地区();
});
$(“#id#运输#U省”)。更改(函数(){
得到你的地区();
});
});

Celular o teléfono:
环境部长:
第二次环境部长会议(任择):
航运署:
汤姆斯
帕斯科
乌卡亚利
卡劳
阿亚库乔
Áncash
洛雷托
卡贾马卡
兰巴耶克
墨瓜
普诺
塔克纳
阿雷基帕
阿普利麦克
朱宁
航运省:
维拉尔康塔尔米兰特酒店
汤姆斯
扎鲁米拉
航运区:
蓬塔萨尔独木舟酒店
佐里托斯
卡西塔斯

问题可能是由于js的异步特性造成的。 您可以尝试使用
async
wait

我已经更改了js代码,您可以尝试以下操作:

function get_provinces() {
    // notice the promise
    return new Promise(function (resolve, reject) {
        var val_d = $("#id_shipping_department").val()
        $.ajax({
            url: "/province/",
            data: { // Pass parameters in separate object
                d_name: val_d
            },
        }).done(function (result) {
            $("#id_shipping_province").html(result);
            resolve(result)
        });
    });
}


function get_districts() {
    return new Promise(function (resolve, reject) {
        var val_d = $("#id_shipping_department").val()
        var val_p = $("#id_shipping_province").val()
        $.ajax({
            url: "/district/",
            data: { // Pass parameters in separate object
                d_name: val_d,
                p_name: val_p
            },
        }).done(function (result) {
            $("#id_shipping_district").html(result);
            resolve(result)
        });
    });
}

$("document").ready(function () {
    $("#id_shipping_department").change(async /* <--- */ function () {
        await /* <--- */ get_provinces();
        await /* <--- */ get_districts();

    });

    $("#id_shipping_province").change(async /* <--- */ function () {
        await get_districts();
    });

});
函数get_/){
//注意承诺
返回新承诺(功能(解决、拒绝){
var val_d=$(“#id_航运部门”).val()
$.ajax({
url:“/province/”,
数据:{//在单独的对象中传递参数
d_名称:val_d
},
}).完成(功能(结果){
$(“#id#u shipping_province”).html(结果);
解决(结果)
});
});
}
函数get_districts(){
返回新承诺(功能(解决、拒绝){
var val_d=$(“#id_航运部门”).val()
var val_p=$(“#id_shipping_province”).val()
$.ajax({
网址:“/district/”,
数据:{//在单独的对象中传递参数
d_名称:val_d,
p_名称:val_p
},
}).完成(功能(结果){
$(“#id#u shipping_district”).html(结果);
解决(结果)
});
});
}
$(“文档”).ready(函数(){

$(“#id_shipping_department”).change(async/*@zer00ne)如果我更改部门,则不会更改。我希望在部门更改时,省和区应该更改。在部门更改时,Pero solo省会更改。