我正试图找到一种方法来填充我的一个控制器的多选(快速选择)下拉列表。我试图通过将click事件绑定到multiple select来发出ajax请求。多个select的data-url
属性将等于ajax的响应,该响应在json中编码。我认为这是可能的,因为在dbrekalo fastselect的文档中,data-url
属性接受json文件(所以我认为它可以接受任何参数/值,只要它返回json)。
我还尝试创建一个虚拟json文件,保存在我的views文件夹中,并将文件名放在data-url
属性中,但是我得到了同样的错误:
Uncaught TypeError: Cannot use 'in' operator to search for '16894' in <!DOCTYPE html>
请告诉我如何才能成功实现这一目标。我找不到另一个用于多选的jquery插件,可以添加其他(在当前列表中不可用)功能。
这就是视图的样子:
<div class="col-lg-7">
<input
id="multip"
type="text"
multiple
class="multipleSelect"
data-user-option-allowed="true"
data-load-once="false"
name="skills[]";/>
</div>
ajax:
$(".multipleSelect").click(function() {
var url = "<?php echo base_url()?>applicant/get_skill_list";
$.ajax({
dataType: "JSON",
type: "GET",
url: url,
success: function(data) {
console.log(data);
$("#multip").attr("data-url", data);
}
});
});
我的控制器:
public function get_skill_list() {
$data = $this->Dropdown_model->get_skill_list();
echo json_encode($data);
}
答案 0 :(得分:0)
在fastselect插件中,数据将动态地通过ajax加载,在这种情况下,你需要使用下面的行。
<input type="text" id="multip" class="singleInputDynamic" data-url="<?php echo base_url('applicant/get_skill_list')?>" data-load-once="true" name="language" />
<script type="text/javascript">
$('#multip').fastselect();
</script>
这样可确保您的数据以下列格式显示。 text-value
对。
[
{"text": "Afghanistan", "value": "Afghanistan"},
{"text": "Albania", "value": "Albania"},
{"text": "Algeria", "value": "Algeria"},
{"text": "Angola", "value": "Angola"}
]
这会对你有帮助。