我还是javascript和ajax中的新手,我试图在我的CodeIgniter项目中的html选择中创建ajax show current类别,代码如下:
此处的HTML:
<select class="form-control" name="category" id="category" onclick="loadCategory();">
<option value="">Choose</option>
<option> </option>
<option> </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()?感谢。
答案 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
击> <击> 撞击>
尝试使用onclick
从select 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());