【问题标题】:Dropdown child menu not displaying any data?下拉子菜单不显示任何数据?
【发布时间】:2015-08-16 22:49:31
【问题描述】:

我的 codeigniter 表单中有这个简单的下拉菜单。当点击 dzongkhag(district) 时,它应该显示 geogs(towns) 的列表,但是,它不这样做。我拥有的下拉菜单不是最好的,但这是我在尝试(数周)多次失败后所能想到的。如果有人可以帮助我解决/解决/建议,我将不胜感激。

这里是sn-ps。 查看.php

<label >Dzongkhag: </label>
<select id="user_dzongkhag" name="dzongkhag" >
  <option>Select Dzongkhag</option>
  <option value="Bumthang">Bumtang</option>
  <option value="Chhukha">Chhukha</option>
  <option value="Dagana">Dagana</option>
  <option value="Gasa">Gasa</option>
  <option value="Haa">Haa</option>
  <option value="Lhuentse">Lhuntse</option>
  <option value="Monggar">Monggar</option>
  <option value="Paro">Paro</option>
  <option value="Pema Gatshel">Pema Gatshel</option>
  <option value="Punakha">Punakha</option>
  <option value="Samdrup Jongkhar">Samdrup Jongkhar</option>
  <option value="Samtse">Samtse</option>
  <option value="Sarpang">Sarpang</option>
  <option value="Thimphu">Thimphu</option>
  <option value="Trashigang">Trashigang</option>
  <option value="Trashi Yangtse">Trashi Yangtse</option>
  <option value="Trongsa">Trongsa</option>
  <option value="Tsirang">Tsirang</option>
  <option value="Wangdue Phodrang">Wangdue Phodrang</option>
  <option value="Zhemgang">Zhemgang</option>                
</select>

<label >Geog:</label>
<select id="user_geog" name="geog" >
  <option> select geog</option>
</select>

javascript(我在 view.php 而不是 js 文件夹中实现它)

$(document).ready(function(){
  $('#user_dzongkhag').change(function(){
    $('#user_geog').html('<option> Fetching...</option>');

    var user_dzongkhag =$('#user_dzongkhag').val();

    //alert(new_div);

    $.ajax({
      type:"post",

      data:"user_dzongkhag="+user_dzongkhag,
      url:"<?php echo site_url('ajax/select_auth_geog/'); ?>",
      cache:false,
      success:function(resp){
        //alert(resp);
        $('#user_geog').html(resp);
      }
    });
  });
});

controller.php

public function select_auth_geog(){
  $user_dzongkhag= $this->input->post('user_dzongkhag');
  $returnGeog=$this->ajax_model->select_auth_geog($user_dzongkhag);
  foreach ($returnGeog as $key) {
    echo '<option value="'.$key['name'].'">'.$key['name'].' </option>';
  }
}

model.php

public function select_auth_geog($user_dzongkhag){
  if($user_dzongkhag=='Bumtang'){
    $user_dzongkhag=1;
  }elseif($user_dzongkhag=='Chhukha'){
    $user_dzongkhag=2;
  }elseif($user_dzongkhag=='Dagana'){
    $user_dzongkhag=3;
  }elseif($user_dzongkhag=='Gasa'){
    $user_dzongkhag=4;
  }elseif($user_dzongkhag=='Haa'){
    $user_dzongkhag=5;
  }elseif($user_dzongkhag=='Lhuntse'){
    $user_dzongkhag=6;
  }elseif($user_dzongkhag=='Monggar'){
  ......
  ........

【问题讨论】:

  • 感谢@Jonathan 的编辑
  • 没问题。 :) 我发现干净的代码更容易阅读。当您在 JS 中取消注释 alert(resp); 时会发生什么?此外,如果您在控制器中 select_auth_geog 函数的开头回显 &lt;option&gt;,它是否有效?
  • alert(resp) 给出一个警告消息框。并且呼应一个选项并没有产生任何结果。不太确定,如果我正确地完成了回声部分@Jonathan
  • 警报消息框是否为空?对于回声,将其作为控制器 select_auth_geog 函数的第一行:echo '&lt;option value="candy"&gt;Candy&lt;/option&gt;'; 本质上,我想知道它是否到达控制器。
  • @Jonathan,是的,消息框是空的。回声的输出是&lt;option value="candy"&gt;Candy&lt;/option&gt;&lt;div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"&gt; &lt;h4&gt;A PHP Error was encountered&lt;/h4&gt; &lt;p&gt;Severity: Notice&lt;/p&gt; &lt;p&gt;Message: Undefined index: name&lt;/p&gt; &lt;p&gt;Filename: controllers/ajax.php&lt;/p&gt; &lt;p&gt;Line Number: 152&lt;/p&gt; &lt;/div&gt;&lt;div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"&gt; &lt;h4&gt;A PHP Error was encountered&lt;/h4&gt; &lt;p&gt;Severity: Notice&lt;/p&gt; &lt;p&gt;Message: Undefined index: name&lt;/p&gt; &lt;p&gt;Filename: controllers/ajax.php&lt;/p&gt; &lt;p&gt;Line Number: 152&lt;/p&gt;

标签: javascript php jquery html codeigniter


【解决方案1】:

尝试切换这两行,您可能会在选择框值存储到 user_dzongkhag 之前将其删除。

$(document).ready(function(){
  $('#user_dzongkhag').change(function(){
    $('#user_geog').html('<option> Fetching...</option>');  <-------------

    var user_dzongkhag =$('#user_dzongkhag').val();         <-------------

    //alert(new_div);

    $.ajax({
      type:"post",

      data:"user_dzongkhag="+user_dzongkhag,
      url:"<?php echo site_url('ajax/select_auth_geog/'); ?>",
      cache:false,
      success:function(resp){
        //alert(resp);
        $('#user_geog').html(resp);
      }
    });
  });
});

【讨论】:

  • 试过你的建议@oMiKeY,下拉列表只显示单词Fectching
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 1970-01-01
  • 1970-01-01
  • 2012-05-27
相关资源
最近更新 更多