以编程方式重置 select2 版本 4.0.1 的内容

Reset programmatically the content of select2 version 4.0.1

我正在使用两个 select2 一个用于省份,另一个用于城市。我的目标是通过从后端作为 json 返回的城市填充 select2 下拉列表。

目前第一个电话对我有效,城市 select2 已正确填写。唯一的问题是,在第二次调用(由省份更改触发)时,json 返回的内容不是替换 select 2 个城市的内容,而是添加到其中,我不知道如何清空添加前的内容。

我都试过了:

$("#city").select2({'data' : null });

$("#city").select2('data', null );

这是我的 ajax 电话:

$(".select2").select2();
$('#id_province').on('change', function() {
    if ($(this).val() > 0) {
        $.ajax({ 
            type: 'GET', 
            url: './cities.php', 
            data: { province: $(this).val() }, 
            dataType: 'json',
            success: function (data) { 
                console.log(data);
                $("#city").select2({'data' : null });
                $("#city").select2({
                      data: data
                }); 
            }
        });         
    }
});

这是从服务器返回的 json 的示例:

[{"id":"62","text":"Brandon"},{"id":"63","text":"Dauphin"},{"id":"64","text":"Flin Flon"},{"id":"65","text":"Portage la Prairie"},{"id":"66","text":"Selkirk"},{"id":"67","text":"Steinbach"},{"id":"68","text":"Thompson"},{"id":"69","text":"Winkler"},{"id":"70","text":"Winnipeg"}]

您可以删除所有选项,例如(如果您使用)

$("#city").find('option').remove();

Select2 自动更新其选项列表