我正在使用jquery select2插件,我的设置为brands.js
:
$('.select2').select2({
ajax: {
url: '/data/brands-get',
dataType: 'json',
placeholder: "Проивзодитель...",
allowClear: true
}
});
$( document ).ready(function() {
$('#select2-add').trigger("change");
});
在brands.php
视图中:
echo $form->field($model, 'brand_name', ['template' => '{label}{input}{error}'])
->dropDownList(array(), ['class' => 'form-control select2','id' =>'select2-add'])->label("Brand",["class" => ""]);
在/data/brands-get
下,我有一个yii2动作,该动作返回品牌的json,并通过在mysql数据库中查找来返回当前用户选择的品牌。问题是,当我加载页面时,/brands
视图将呈现select并且一切正常,如果我单击select-add,我将获得正确的行为,搜索正在工作,等等,但是没有ajax请求在页面加载时,用数据填充select2
,并设置默认项!我添加了这个:
$('#select2-add').trigger("change");
,但这不起作用,没有页面加载到/data/brands-get
的请求。我该如何在页面加载时在select2上加载项目?
答案 0 :(得分:0)
好,所以没有像$('.select2').reload()
这样简单的事情,所以我这样做了:
function getFilters(element)
{
$.ajax({
url : "/data/brands-get",
type : 'GET',
data : "",
timeout : 10000,
success: function (response)
{
for(var i =0; i < response.results.length; i++){
var newOption = new Option(response.results[i].text, response.results[i].id, false, false);
$(element).append(newOption).trigger('change');
}
},
error : function (xhr, ajaxOptions, thrownError)
{
alert("error");
}
});
}
$( document ).ready(function() {
getFilters("#brand-add");
});
只需在加载时将选项手动添加到选择元素即可。