jQuery Select2在页面加载时加载Ajax数据

时间:2018-07-02 03:13:28

标签: php jquery

我正在使用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上加载项目?

1 个答案:

答案 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");
});

只需在加载时将选项手动添加到选择元素即可。