首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery延迟和级联选择框

JQuery延迟和级联选择框
EN

Stack Overflow用户
提问于 2018-02-08 21:13:41
回答 1查看 149关注 0票数 0

在页面加载时,我尝试填充选择框。获取#select2数据的URL取决于#select1的值。由于第一个选择框也是由从Ajax调用接收到的数据填充的,因此我不能预先知道在页面加载时所选的选项是什么。在主体负载时调用initData()

我尝试过以下方法,但在initData()中,当调用getSelectData('#select2', 'urlBase/' + selectOneValue + '/urlSuffix');时,selectOneValuenull

代码语言:javascript
复制
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
        }
    });
}

我在这里做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2018-02-08 21:53:02

我还没有测试过这个,但是这个应该可以工作。如果没有,请告诉我。

代码语言:javascript
复制
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();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48686352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档