Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery ui自动完成:远程源问题_Jquery_Json_Ruby On Rails 3_Jquery Ui_Autocomplete - Fatal编程技术网

jquery ui自动完成:远程源问题

jquery ui自动完成:远程源问题,jquery,json,ruby-on-rails-3,jquery-ui,autocomplete,Jquery,Json,Ruby On Rails 3,Jquery Ui,Autocomplete,我使用jqueryui自动完成 当我使用局部变量作为源时,它就工作了 var json = [ {type: "Utente",label: "Luca XXXX",url: "http://lvh.me:3000/users/4dde465add53e04e5c000001"}, {type: "Domanda",label: "Luca asdas adsfdsfdsf sdsd",url: "http://lvh.me:3000/quest

我使用jqueryui自动完成

当我使用局部变量作为源时,它就工作了

var json = [
            {type: "Utente",label: "Luca XXXX",url: "http://lvh.me:3000/users/4dde465add53e04e5c000001"},

            {type: "Domanda",label: "Luca asdas adsfdsfdsf sdsd",url: "http://lvh.me:3000/questions/luca-asdas-adsfdsfdsf-sdsd"},
    ];
但是当我从另一个文件返回相同的源代码时,它就不起作用了。我在firebug中找到了JSON对象,它似乎与我的局部变量JSON相同

代码如下:

$( ".query-input" ).autocomplete({
        minLength: 3,
        source: "/search.json",
        select: function( event, ui ) { window.location = ui.item.url }
    })
    .data( "autocomplete" )._renderItem = function( ul, item ) {
        return $( "<li></li>" )
            .data( "item.autocomplete", item )
            .append( "<a href=" + item.url + ">"+ item.label +"</a><span>" + item.type + "</span>" )
            .appendTo( ul );
    };
<%= "#{params[ :callback ]}(" if params[:callback] -%>
[<% @results.each_with_index do |r, i| %>
  <% if r.is_a? User %>
    {
      type: "Utente",
      label: <%= r.name.to_json.html_safe %>,
      url: "<%= user_url(r.id) %>"
    }
  <% elsif r.is_a? Question %>
    {
      type: "Domanda",
      label: <%= r.text.to_json.html_safe %>,
      url: "<%= question_url(r.slug) %>"
    }
  <% elsif r.is_a? Topic %>
    {
      type: "Argomento",
      label: <%= r.name.to_json.html_safe %>,
      url: "<%= topic_path(r.slug) %>"
    }
  <% end %>
  <%= "," unless i == @results.count - 1 %>
<% end %>]
<%= ")" if params[:callback] -%>
$(“.query输入”).autocomplete({
最小长度:3,
来源:“/search.json”,
选择:函数(事件,ui){window.location=ui.item.url}
})
.数据(“自动完成”)。\u renderItem=功能(ul,项目){
返回$(“
  • ”) .data(“item.autocomplete”,item) .append(“+item.type+”) .附录(ul); };
    这是search.json.erb文件:

    [<% @results.each do |r| %>
    <% if r.is_a? User %>
        {type: "Utente",label: <%= r.name.to_json.html_safe %>,url: <%= user_url(r.id).to_json.html_safe %>},
    <% elsif r.is_a? Question %>
        {type: "Domanda",label: <%= r.text.to_json.html_safe %>,url: <%= question_url(r.slug).to_json.html_safe %>},
    <% elsif r.is_a? Topic %>
        {type: "Argomento",label: <%= r.name.to_json.html_safe %>,url: <%= topic_path(r.id).to_json.html_safe %>},
    <% end %>
    <% end %>]
    
    [
    {类型:“Utene”,标签:,url:},
    {类型:“Domanda”,标签:,url:},
    {类型:“Argomento”,标签:,url:},
    ]
    
    怎么了

        $( ".query-input" ).autocomplete({
                minLength: 3,
                dataType: 'json',
                source: "/search.json",
                select: function( event, ui ) { window.location = ui.item.url }
    })
    
    您应该将数据类型称为“json”

    您应该将数据类型称为“json”

    我认为
    html\u-safe
    不会用双引号字符包装该值

    编辑:结果显示
    html\u-safe
    确实添加了双引号字符。但是,Firebug跟踪中的JSON无效,并且与问题中的代码不匹配:

    [
        {
            type: "Utente",
            label: "Luca XXXX",
            url: "lvh.me:3000/users/4dde465add53e04e5c000001"; <-- syntax error
        }, {
            type: "Domanda",
            label: "Luca asdas adsfdsfdsf sdsd",
            url: "lvh.me:3000/questions/luca-asdas-adsfdsfdsf-sdsd"; <-- syntax error
        },
    ]
    
    [
    {
    类型:“上尉”,
    标签:“卢卡XXXX”,
    url:“lvh.me:3000/users/4dde465add53e04e5c00001”我认为
    html\u-safe
    不会用双引号字符来包装该值

    编辑:结果显示
    html\u-safe
    确实添加了双引号字符。但是,Firebug跟踪中的JSON无效,并且与问题中的代码不匹配:

    [
        {
            type: "Utente",
            label: "Luca XXXX",
            url: "lvh.me:3000/users/4dde465add53e04e5c000001"; <-- syntax error
        }, {
            type: "Domanda",
            label: "Luca asdas adsfdsfdsf sdsd",
            url: "lvh.me:3000/questions/luca-asdas-adsfdsfdsf-sdsd"; <-- syntax error
        },
    ]
    
    [
    {
    类型:“上尉”,
    标签:“卢卡XXXX”,
    
    url:“lvh.me:3000/users/4dde465add53e04e5c00001”问题在于错过了回调。自动完成需要回调参数才能正常工作。 右search.json代码如下所示:

    $( ".query-input" ).autocomplete({
            minLength: 3,
            source: "/search.json",
            select: function( event, ui ) { window.location = ui.item.url }
        })
        .data( "autocomplete" )._renderItem = function( ul, item ) {
            return $( "<li></li>" )
                .data( "item.autocomplete", item )
                .append( "<a href=" + item.url + ">"+ item.label +"</a><span>" + item.type + "</span>" )
                .appendTo( ul );
        };
    
    <%= "#{params[ :callback ]}(" if params[:callback] -%>
    [<% @results.each_with_index do |r, i| %>
      <% if r.is_a? User %>
        {
          type: "Utente",
          label: <%= r.name.to_json.html_safe %>,
          url: "<%= user_url(r.id) %>"
        }
      <% elsif r.is_a? Question %>
        {
          type: "Domanda",
          label: <%= r.text.to_json.html_safe %>,
          url: "<%= question_url(r.slug) %>"
        }
      <% elsif r.is_a? Topic %>
        {
          type: "Argomento",
          label: <%= r.name.to_json.html_safe %>,
          url: "<%= topic_path(r.slug) %>"
        }
      <% end %>
      <%= "," unless i == @results.count - 1 %>
    <% end %>]
    <%= ")" if params[:callback] -%>
    
    
    [
    {
    类型:“上尉”,
    标签:,
    网址:“
    }
    {
    类型:“多曼达”,
    标签:,
    网址:“
    }
    {
    类型:“Argomento”,
    标签:,
    网址:“
    }
    ]
    
    问题在于缺少回调。Autocomplete需要回调参数才能正常工作。 右search.json代码如下所示:

    $( ".query-input" ).autocomplete({
            minLength: 3,
            source: "/search.json",
            select: function( event, ui ) { window.location = ui.item.url }
        })
        .data( "autocomplete" )._renderItem = function( ul, item ) {
            return $( "<li></li>" )
                .data( "item.autocomplete", item )
                .append( "<a href=" + item.url + ">"+ item.label +"</a><span>" + item.type + "</span>" )
                .appendTo( ul );
        };
    
    <%= "#{params[ :callback ]}(" if params[:callback] -%>
    [<% @results.each_with_index do |r, i| %>
      <% if r.is_a? User %>
        {
          type: "Utente",
          label: <%= r.name.to_json.html_safe %>,
          url: "<%= user_url(r.id) %>"
        }
      <% elsif r.is_a? Question %>
        {
          type: "Domanda",
          label: <%= r.text.to_json.html_safe %>,
          url: "<%= question_url(r.slug) %>"
        }
      <% elsif r.is_a? Topic %>
        {
          type: "Argomento",
          label: <%= r.name.to_json.html_safe %>,
          url: "<%= topic_path(r.slug) %>"
        }
      <% end %>
      <%= "," unless i == @results.count - 1 %>
    <% end %>]
    <%= ")" if params[:callback] -%>
    
    
    [
    {
    类型:“上尉”,
    标签:,
    网址:“
    }
    {
    类型:“多曼达”,
    标签:,
    网址:“
    }
    {
    类型:“Argomento”,
    标签:,
    网址:“
    }
    ]
    
    不起作用。带双引号的html_安全包装值。这是firebug的响应的复制/粘贴:[{type:“Utente”,标签:“Luca XXXX”,url:},{type:“Domanda”,标签:“Luca asdas adsfdsfdsf sdsd”,url:},]不起作用。带双引号的html_安全包装值。这是firebug的响应的复制/粘贴:[{type:“Utente”,标签:“Luca XXXX”,url:“},{类型:“Domanda”,标签:“Luca asdas adsfdsfdsf sdsd”,url:“},]