无法通过jQuery填充下拉框

时间:2017-01-10 21:15:59

标签: javascript php jquery html ajax

背景资料

我有一些加载网络表单的PHP / HTML / JavaScript代码。出于讨论的目的,让我们说这个表单是编辑小部件的详细信息"页。 这个表单包含一个表...带有一堆行。每行有一个下拉框 - 每行相同 - 并且下拉的选定值是根据数据库中先前保存的数据确定的。

问题

下拉列表没有被我正在制作的.append()调用填充,我也不知道原因。

代码

这是我逻辑中的事件序列:

  1. PHP逻辑 - 遍历需要包含在表中的每条记录......并创建一个EMPTY框,如下所示:

    frame_in_bytes
  2. 然后,一旦页面完成渲染,我在我的document.ready部分中有这个逻辑:

      for ($i=0; $i < count($w_details['tc']); $i++) {      
          ....
         //logic to build basic table structure including:
         echo "<td><select placeholder='Domain:' name='domain" .$i ."' id=domain" .$i ."'></select></td>";
    
         echo "<input type='hidden' class='domainvals' id='hidden_domain" .$i . "' name='hidden_domain" .$i. "' value='" .$wdetails['tc'][$i]['destdomain'] . "'/>"; 
         ...
      }
    

    到目前为止我尝试过的事情:

    在F12调试窗口中,我已经确认我有一个&#34; domain0&#34;像这样控制:

        //populate domain list.
        $.ajax({
              url:"<?php echo site_url('domain/domainlist');?>",
              type:'POST',
              dataType:'json',
              success: function(res) {
                    //loop through results
                    var htmlstring = "<option value='' disabled selected>Select the Domain</option>";
                    for (var key in res) {
                        if (res.hasOwnProperty(key)) {
                                htmlstring += "<option value=" + res[key]['domain'] + ">" + res[key]['domain'] + "</option>";
                        }
                     }
                     //find every hidden input that is storing a domain value
                     $('.domainvals').each(function (i, row) {
                        console.log($(this).val()) ;
                        $('#domain'+i).append(htmlstring);
                        //TODO:  add logic to select the right value using $this.val();
                      });
    
              }, 
              error: function(xhr, req, err) {
                     //var err = eval("(" + xhr.responseText + ")");
                     console.log(err.Message);
              }
        });
    

    没有出现错误消息(只是空数组/列表),所以我肯定已经创建了它。我还可以看到表单上的控件。

    我尝试更改将html附加到硬代码名称的代码,如下所示:

        $("#domain0").find('option')
    

    同样,没有错误,但它没有填充列表。

    任何建议将不胜感激。我确定它很简单,我只是缺席了。

2 个答案:

答案 0 :(得分:0)

您可以使用Javascript / Jquery附加一个选项,如下所示:

$('myDropDown').append($('<option>', {
    value: optionValue,
    text: optionText
}));

答案 1 :(得分:0)

如果您要添加这些域

  

$(&#34; #domain(n)的&#34)

动态

元素,然后您不能像

那样访问它们
$("#domain0")

DO

$(document).find("#domain0") or $("body").find("#domain0")

代替。