fef*_*efe 9 javascript ajax jquery twitter-bootstrap
我使用bootstrap multi-select,我想用ajax更新flow上的选项
为了填充init我的多选我做
<select name="model" class="multiselect" multiple="multiple">
<? foreach ($sel_models as $mod) { ?>
<option value="<?= $mod ?>" <?= ($mod == $params['model']) ? 'selected' : '' ?>><?= $mod ?></option>
<? } ?>
</select>
Run Code Online (Sandbox Code Playgroud)
然后在事件上我想用以下ajax更新我的选项列表
我试图使用重建方法但不会在创建后触发下拉列表
$.ajax({
type: 'post',
url: "helper/ajax_search.php",
data: {models: decodeURIComponent(brands)},
dataType: 'json',
success: function(data) {
$('select.multiselect').empty();
$('select.multiselect').append(
$('<option></option>')
.text('alle')
.val('alle')
);
$.each(data, function(index, html) {
$('select.multiselect').append(
$('<option></option>')
.text(html.name)
.val(html.name)
);
});
$('.multiselect').multiselect('rebuild')
},
error: function(error) {
console.log("Error:");
console.log(error);
}
});
Run Code Online (Sandbox Code Playgroud)
使用firebug,我可以看到列表已生成但select不会显示
Pim*_*Web 24
在文档中,我可以阅读:
.multiselect('setOptions',options)用于在初始化多选后更改配置.这可能与.multiselect('rebuild')结合使用.
也许您无法通过初始方式更改窗口小部件数据.以正确的方式你应该使用setOptions方法.
另外:按照你的方式,也许你应该考虑销毁你的小部件.multiselect('destroy')并在之后重新创建它.
评论后更新:
在文档中:(你已经链接)
通过以下方式提供用于构建选项选项的数据:
var data = [
{label: "ACNP", value: "ACNP"},
{label: "test", value: "test"}
];
$("#multiselect").multiselect('dataprovider', data);
Run Code Online (Sandbox Code Playgroud)
所以: 当你从ajax调用中获取数据时,你必须创建一个对象数组(它是你想要的选项中的选项),格式如下
var data =
[
{label: 'option1Label', value: 'option1Value'},
{label: 'option2Label', value: 'option2Value'},
...
]
Run Code Online (Sandbox Code Playgroud)
创建对象数组后,只需调用该方法即可
$("#multiselect").multiselect('dataprovider', data);
Run Code Online (Sandbox Code Playgroud)
数据是您的对象数组.
我希望我很清楚:/
tbr*_*y22 10
作为multiselect('dataprovider',data)的替代方法,您可以使用jquery构建列表,与您在问题中的方式完全相同.您需要做的唯一更改是延迟重建,直到ajax请求完成.
var buildDrivers = $.getJSON('resources/orders/drivers.json', function(data) {
$.each(data, function(i, driver) {
$('#toolbar select[name="drivers"]').append('<option>'+driver+'</option>');
});
});
buildDrivers.complete(function() {
$('.multiselect').multiselect('rebuild');
});
Run Code Online (Sandbox Code Playgroud)
有关文档,请参阅http://api.jquery.com/jquery.getjson/