javascript - 使用 AJAX 将 JSON 标签加载到 Select2

标签 javascript ruby-on-rails json

好的,所以我使用下面的代码获取标签列表并将其加载到 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 ]
      });
  })

enter image description here

有趣的是,如果我替换以下内容:

 $("#ticket_option_list").select2({
        tags: ["test1","test2"]
      });

...一切都很好。

enter image description here

此 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/

相关文章:

javascript - 如何禁用 contenteditable div 中的元素?

javascript - Liquid Grid——人们如何调用它

javascript - Rails - 使用 AJAX 或重定向渲染 JavaScript

c# - 反序列化嵌套的 JSON

java - 使用 Gson 创建 JSON 时 POJO 中黑色字段的影响

javascript - 从缓冲区播放声音

javascript - 更改图像和标题

ruby-on-rails - 在 ruby​​ on rails 网站上运行 XNA 游戏

ruby-on-rails - 如何循环遍历属性和数组以在表单中创建表

javascript - 从表单中获取数据并构建它的多维数组