Ajax加载选择动态选项

时间:2017-01-02 18:40:58

标签: javascript php jquery ajax codeigniter

我还是javascript和ajax中的新手,我试图在我的CodeIgniter项目中的html选择中创建ajax show current类别,代码如下:

此处的HTML:

<select class="form-control" name="category" id="category" onclick="loadCategory();">
   <option value="">Choose</option>
   <option>&nbsp;</option>
   <option>&nbsp;</option>
</select>

这是Javascript:

function loadCategory()
{
 var url = "<?php echo site_url('home/ajax_show_category_options');?>";
 $('#category').load(url);
 return false;
}

这是我的控制人员:

public function ajax_show_category_options()
  {
    $category = $this->db->get('category')->result();
    $data = "<option value=''>-- Choose--</option>";
    foreach ($category as $rowCategory) {
      $data .= "<option value='".$rowCategory->id."'>".$rowCategory->name."</option>";
    }
    echo $data;
  }

当我单击选择选项时,将执行loadCategory(),然后将select添加到当前类别列表。问题是在我选择类别后,select选项将再次运行loadCategory(),我选择的值选项将为空。我选择选项后如何停止loadCategory()?感谢。

1 个答案:

答案 0 :(得分:0)

为了简单起见,设置一个全局布尔变量。将其值设置为true并在执行ajax call之前检查是否为真。请考虑以下示例。

var loadedOptions=false;//global variable
function loadCategory()
{
    if(!loadedOptions){
       var url = "<?php echo site_url('home/ajax_show_category_options');?>";
       $('#category').load(url,function(){
           loadedOptions=true; //set it to true once request is done
       });
    }
    return false;
}

此外,您还可以尝试使用click event select element off取消绑定off [根据jquery版本检查function loadCategory() { var url = "<?php echo site_url('home/ajax_show_category_options');?>"; $('#category').load(url,function(){ $("#category").off('click'); }); return false; } 的使用情况正在使用]。

<击>

对于前

removeAttr

<击>

尝试使用onclickselect element移除$('#category').load(url,function(){ $("#category").removeAttr('onclick'); }); ,如下所示:

public class GraphTypeManager {
    // This would be created by the template
    private static final Logger LOG = Logger.getLogger(GraphTypeManager.class.getName());