【问题标题】:jQuery-Tokeninput not displaying results from JSON resultsjQuery-Tokeninput 不显示来自 JSON 结果的结果
【发布时间】:2013-02-28 23:18:05
【问题描述】:

查看

= text_field_tag :food_tokens

FoodsController

def search
  @foods = Food.where("name LIKE ?" , "%#{params[:q]}%")
  respond_to do |format|
    format.json { render json: @foods.as_json(only: [:id, :name]) }
  end
end

路线

match '/search' => 'foods#search'

application.js

$(function() {
  $('#food_tokens').tokenInput('/search.json', { crossDomain: false }
});

来自 /search.json 的输出

[{"id":"5","name":"Apple"},{"id":"6","name":"Burger"}]

当我开始在文本字段中输入“Apple”时,我收到“无结果”消息。

有什么见解吗?

【问题讨论】:

  • $.get('/search.json'); 返回什么?
  • $.get('/search.json);返回此对象。 Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}我遗漏了很多内容,但里面是这样的:responseText: "[{"id":"5","name":"Apple"},{"id":"6","name":"Burger"}]"

标签: jquery ruby-on-rails ruby jquery-tokeninput


【解决方案1】:

我认为问题是你没有正确关闭.tokenInput方法,应该是这样的:

$(function() {
  $('#food_tokens').tokenInput('/search.json', { crossDomain: false });
});

【讨论】:

  • 抱歉,我刚刚忘记在 OP 中关闭 .tokenInput。出于沮丧,我改用github.com/twitter/typeahead.js 并取得了成功。我仍然会保留这个 tokeninput 问题分支,以防有人发现代码有什么问题。
【解决方案2】:

我认为是因为大写字母。我有一个类似的问题,我稍微改变了代码。首先,我在这个 SO 问题的answer 之后将"name LIKE ?" 更改为"name ILIKE ?"。其次,我把jquery.tokeninput.js的第797行改成了这个

if(input_box.val().toLowerCase() === query) {
   populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
}

到这里

if(input_box.val() === query) {
  populate_dropdown(query, settings.jsonContainer ? results[settings.jsonContainer] : results);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多