好的,所以我使用下面的代码获取标签列表并将其加载到 select2 框中。这些选项作为 ["test1","test2"]
返回,这应该是正确的格式,但我假设它们需要以某种方式循环处理。
//This part is meant to grab the options. I am using model ID 473 for testing
$('#ticket_style_id').on("change", function(e) {
var tag_list = $.ajax({
url: "/grab_options/<%= 473 %>",
async: false
}).responseText;
//This part is meant to load the tag_list into a select2 box based on the
//selection above
$("#ticket_option_list").select2({
tags: [ tag_list ]
});
})
有趣的是,如果我替换以下内容:
$("#ticket_option_list").select2({
tags: ["test1","test2"]
});
...一切都很好。
此 Controller 代码正在返回 JSON:
def grab_options
style = Style.find(params[:id])
respond_to do |format|
format.js { render json: style.option_list.to_json }
end
end
最佳答案
出于两个原因,我建议采用以下方法:
1) 它强制将响应解释为 JSON(因为 dataType: 'json'
)
2) 它使用成功回调而不是使用 async: false
$('#ticket_style_id').on("change", function(e) {
var tag_list = $.ajax({
url: "/grab_options/<%= 473 %>",
dataType: 'json',
success: function(response) {
$("#ticket_option_list").select2({
tags: response
});
}
});
});
编辑:
也就是说,我相信 Select2
有一个内置的 AJAX 方法,您可以在他们的 tutorial 中看到它.
关于javascript - 使用 AJAX 将 JSON 标签加载到 Select2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835823/