在 jquery 自动完成插件中,数据没有被解析为 json

Posted

技术标签:

【中文标题】在 jquery 自动完成插件中,数据没有被解析为 json【英文标题】:data not getting parsed as json in jquery auto complete plugin 【发布时间】:2012-01-29 06:15:34 【问题描述】:

我想在 Rails 应用程序中实现自动完成功能。我正在使用 jquery 自动完成插件。

我想为以下数组实现自动完成功能。

  @testers = User.find_by_sql("select * from users where id in(select user_id from user_role_assignments where role_id in (select id from roles where name like 'Tester')) order by name").paginate(:page=>params[:page],:per_page=>30)   

我想以 json 格式将其传递给 .js 文件。我尝试在我的视图文件中使用下面的代码。但是自动完成没有填充数据。

= form.label :tester_tokens, "Testers" 
        = form.text_field :tester_tokens
        - @testers.each do |tester|
          %tr
            %td=tester.name
            %td=check_box_tag "release[tester_ids][]", tester.id, @release.is_tester_assigned(tester)
      //=will_paginate @testers

:javascript
var data="#escape_javascript @testers.to_json";    
= javascript_include_tag :defaults,:cache => true

我的 .js 文件:

$(document).ready(function()   

$.parseJSON(data);
  alert (data);
 $('#release_tester_tokens').autocomplete(source:data); 

 );

请帮帮我。

【问题讨论】:

【参考方案1】:

您正在丢弃 $.parseJSON 返回的值。

$(function() 
    data = $.parseJSON(data);
    console.log(data);
    $('#release_tester_tokens').autocomplete(source:data); 
);

【讨论】:

嗨,马特,谢谢你回答我。我改变了它。仍然对我不起作用 嗨,马特,我无法在 IE 中看到控制台输出。我尝试将其作为警报消息提供。我收到 2 个警报消息,其中一个包含所有名称,其他为空 您将不得不提供更多信息,例如SSCCE。 jsFiddle 怎么样?其他问题:浏览器在解析之前看到data的值是多少?我什至不知道您如何获得 2 个警报,因为您没有显示任何使用超过 1 个警报的代码。你用的是什么版本的IE? IE8+ 有一个可以与console.log 配合使用的控制台,而console.log 通常比alert 更适合调试。 嗨,马特,控制台输出给了我这个,[“aaloshious”,“aarul”,“aaziz”,“abaher”,“abain”,“abalteanu”,“abencz”,“abennett” , “abenoy”, “aberkovich”, “abhose”, “abirchall”, “abouchard”, “abrezinov”, “aburden”, “aburt”, “acar”, “acarver”, “acase”, “acatana”, “ achandel”、“achandrasekaran”、“achaudhary”、“achen”、“agillera”、“agrodzki”、“agroisman”、“agurusamy”、“ahalimi”、“ahamu”、“ahan”、“ahardie”、“dbrovkovich” , “dbyron”, “dcelestine”, “dchacon”, “dchapeskie”, “dchappelle”, “dcocca”, “dcole”, “dcostanzino”, 1157 更多...] 是解析前还是解析后?这看起来不像valid JSON。

以上是关于在 jquery 自动完成插件中,数据没有被解析为 json的主要内容,如果未能解决你的问题,请参考以下文章

JQuery 自动完成结果

没有 jQuery UI 的自动完成

强烈推荐:jQuery自动补齐插件

JQuery easyui里面的自动完成autocomplete插件

一个jQuery插件,在电子邮件字段中建议并自动完成域。

Rails 中的动态自动完成,使用 jQuery TokenInput 插件