【发布时间】:2015-05-11 14:36:32
【问题描述】:
我正在使用 ajax get 来填充 select2 单选中的值。
select2 是这样初始化的(jQuery):
$("#domain").select2({
placeholder: "Placeholder text",
allowClear: true,
multiple: false,
ajax: {
url: "/json/domain",
dataType: "json",
data: function(term, page) {
return {
q: term,
};
},
results: function(data, page) {
return data;
}
}
这是响应示例:
{"results":[{"id":"1234","text":"Name"}]}
一旦选择了一个值,select2 就会使用 id 更新一个隐藏的输入,并在一个跨度中显示“名称”。
select2 是 POST 的一部分,它根据所选值请求一堆数据。
所以在回发时,选定的值“Name”自然会从 DOM 中消失(而“id”则保留在隐藏的输入中)。
有什么方法可以在 postback 后用 pre-submit 选择的值初始化 select2(显示占位符 pre-postback)?
在 SO 和其他地方环顾四周,我尝试过这样的事情:
$("#domain").select2({
placeholder: "Placeholder text",
allowClear: true,
multiple: false,
ajax: {
url: "/json/domain",
dataType: "json",
data: function(term, page) {
return {
q: term
};
},
results: function(data, page) {
return {results: data};
}
},
initSelection: function(element, callback) {
var id = $('#domain').val();
if(id !== "") {
$.ajax("/json/domain", {
dataType: "json"
}).done(function(data) {
callback(function(data) { callback(data); });
});
}
}
});
这会初始化但返回“未定义”。我猜是因为数据没有传递给 initSelection...
任何指向正确方向的指针都将不胜感激。
【问题讨论】:
标签: jquery ajax select initialization