weixin_33744141 2019-02-26 07:33 采纳率: 0%
浏览 41

如何确保循环中的第一项被响应值填充?

我试图在循环内调用多个ajax请求以加载多个下拉列表。我尝试了顺序方式,但只在循环中的最后一项填充了值。

 var targetcontrols = [];
        var targetcontrols_array = targetControl.split(',');
        var targetsourcecontrols = [];
        var targetsource_array = targetSource.split(',');
        for(i=0; i < targetcontrols_array.length; i++)
        {
            var control_name=targetcontrols_array[i];
            var source=targetsource_array[i];
            $.ajax({
                url: action_url,
                type: 'POST',
                traditional: true,
                async: false,
                data: JSON.stringify( { allselected: allselected_flag, selectedIds: selectedvalues,targetControl:control_name,  targetSource: source, dependency: dependencyOptions } ),
                contentType: "application/json; charset=utf-8",
                dataType: 'json',
                success: function (response) {
                    //To clear existing items
                    var target= $("#"+response.targetControl);
                    target.multiselect('dataprovider', []);
                    var dropdown2OptionList = [];
                    for (i = 0; i < response.values.length; i++) {
                        dropdown2OptionList.push({
                            'label': response.values[i].text,
                            'value': response.values[i].value
                        })
                    }
                    console.log("--control"+control_name);
                    //re initialize the search plugin
                    target.multiselect('dataprovider', dropdown2OptionList);
                    target.multiselect('rebuild');
                }
            });

如何确保循环中的第一项也被响应值填充?

  • 写回答

3条回答 默认 最新

  • 撒拉嘿哟木头 2019-02-26 07:43
    关注

    First of all if you use jquery, utilize it's full potential, instead of for loops, use $.each:

    var targetcontrols = [];
            var targetcontrols_array = targetControl.split(',');
            var targetsourcecontrols = [];
            var targetsource_array = targetSource.split(',');
            $.each(targetcontrols_array, function(i, item)
            {
                var control_name=targetcontrols_array[i];
                var source=targetsource_array[i];
                $.ajax({
                    url: action_url,
                    type: 'POST',
                    traditional: true,
                    async: false,
                    data: JSON.stringify( { allselected: allselected_flag, selectedIds: selectedvalues,targetControl:control_name,  targetSource: source, dependency: dependencyOptions } ),
                    contentType: "application/json; charset=utf-8",
                    dataType: 'json',
                    success: function (response) {
                        //To clear existing items
                        var target= $("#"+response.targetControl);
                        target.multiselect('dataprovider', []);
                        var dropdown2OptionList = [];
                        $.each(response.values, function(v, vItems) {
                            dropdown2OptionList.push({
                                'label': response.values[v].text,
                                'value': response.values[v].value
                            })
                        });
                        console.log("--control"+control_name);
                        //re initialize the search plugin
                        target.multiselect('dataprovider', dropdown2OptionList);
                        target.multiselect('rebuild');
                    }
                });
            });
    
    评论

报告相同问题?

悬赏问题

  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥20 为什么我写出来的绘图程序是这样的,有没有lao哥改一下
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?