繁体   English   中英

jQuery递延和级联选择框

[英]JQuery Deferred & cascading select boxes

在页面加载时,我试图填充选择框。 命中#select2数据的URL取决于#select1的值。 由于第一个选择框也是从Ajax调用接收的数据中填充的,因此我无法事先知道页面加载时所选的选项。 initData()在身体负荷时调用。

我尝试了以下操作,但是在initData()getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix');selectOneValuenull getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix'); 叫做。

function initData() {
    initEnvs().then(function () {
        var selectOneValue= $('#select1').val();
        getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix');
    });
}

function initEnvs() {
    return $.Deferred(function (def) {
        getSelectData('#select1', someUrl);
        def.resolve();
    }).promise();
}

function getSelectData(selectId, urlFragment) {
    $.ajax({
        type: "GET",
        url: "/data/" + urlFragment,
        dataType: "json",

        success: function (data) {
            appendSelectOptions(selectId, data);
        },
        error: function (xhr) {
            //handle error
        }
    });
}

我在这里做错了什么?

我没有测试过,但是应该可以。 让我知道是否。

function initData() {
    initEnvs().then(function () {
        var selectOneValue= $('#select1').val();
        console.log("============ 2");
        getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix').then(function(data){
          console.log("Are we here?");
          appendSelectOptions('#select2', data);
        });
    });
}

function initEnvs() {
    return $.Deferred(function (def) {
        getSelectData('#select1', someUrl).then(function(data){
            console.log(data);
            console.log("============");
            appendSelectOptions('#select1', data);
        });
        def.resolve();
    }).promise();
}

function getSelectData(selectId, urlFragment) {
    return $.Deferred(function (def) {      
      $.ajax({
        type: "GET",
        url: "/data/" + urlFragment,
        dataType: "json"
    });
     def.resolve();
   }).promise();   
}

initData();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM