【问题标题】:JQuery, Rails and Json: Unexpected token oJQuery、Rails 和 Json:意外的标记 o
【发布时间】:2014-01-10 03:52:02
【问题描述】:

我是一名初学者,具有良好的 ruby​​ 和 rails 知识,但 JavaScript 知识非常有限。

我正在尝试在 Select2 jquery 插件实例中推送一些值。

我正在使用这个脚本来管理我的 Select:

$('.ajaxselect').each(function() {
    var url = $(this).data('url'); 
    var placeholder = $(this).data('placeholder'); 
    var saved = jQuery.parseJSON($(this).data('saved'));
    $(this).select2({
      minimumInputLength: 2,
      multiple: true,
      placeholder : placeholder,
      allowClear: true,
      ajax: {
        url: url,
        dataType: 'json',
        quietMillis: 500,
        data: function (term) {
          return {
            name: term
          };
        },
        results: function (data) {
          return {results: data};
        }
      },

      formatResult: function (item, page) {
        return item.name; 
      },

      formatSelection: function (item, page) {
        return item.name; 
      },

      initSelection : function (element, callback) {
        if (saved) {
          callback(saved);
        }
      }

    });
  });

我对这一行的“Unexpected token o”有疑问:

var saved = jQuery.parseJSON($(this).data('saved'));

在我看来,我是这样调用这段代码的:

= form.input :brand_ids, label: false,          |
                  input_html:                                     |
                  {                                               |
                    class: 'ajaxselect form-control',             |
                    data: {                                       |
                      placeholder: "Scegli brand",                |
                      saved: content.brands.to_json,              |
                      url: '/admin/brands/list.json'              | 
                           },                                     |                       
                  }    

我保存的值以正确的方式生成:我尝试使用 pry 和 content.brands.to_json 将权限数据返回给我。

这是我的 binding.pry 日志

pry(#<#<Class:0x007fc66caecd30>>)> content.brands.to_json
=> "[{\"id\":1,\"name\":\"Sony\"},{\"id\":2,\"name\":\"Panasonic\"}]"

这是我的 HTML 生成代码

<input class="string optional form-control form-control form-control form-control ajaxselect form-control" data-placeholder="Scegli brand" data-saved="[{&quot;id&quot;:1,&quot;name&quot;:&quot;Sony&quot;},{&quot;id&quot;:2,&quot;name&quot;:&quot;Panasonic&quot;}]" data-url="/admin/brands/list.json" id="content_brand_ids" name="content[brand_ids]" type="text" value="[1, 2]">

为什么我会遇到这个问题? to_json 是 rails 提供的方法...

【问题讨论】:

  • 能否也分享一下html示例
  • data-saved中的值是什么
  • @ArunPJohny 我的 Haml 代码生成的 HTML?
  • 能否添加浏览器视图源生成的html
  • 我想你可以直接说var saved = $(this).data('saved'); 不需要解析它,data() 方法会帮你搞定

标签: jquery ruby-on-rails json


【解决方案1】:

问题出在线路上

var saved = jQuery.parseJSON($(this).data('saved'));

应该是

var saved = $(this).data('saved');

因为.data() 会为你做解析

演示:ProblemSolution

【讨论】:

    猜你喜欢
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2021-08-28
    • 1970-01-01
    相关资源
    最近更新 更多