2012-05-04 38 views
0

這是一個正確的方法來解析地圖json返回到ajax自動完成調用? 我期待jQuery能夠理解json的響應,並且不需要腳本中的任何額外努力來列出自動完成項目。Ruby - rails - jquery autocomplete parse json

JSON -

[{"issue":"Item returned"}] 

JS -

$("#term").autocomplete({ 
     source: function(request, response){ 
     $.ajax({ 
       url: '/issue/issue_type', 
       type: 'POST', 
       dataType: 'json', 
       data: { issue_code : $("#term").val() }, 
       headers: { 'X-CSRF-Token': '<%= form_authenticity_token.to_s %>' }, 
       success: function(data) { response($.map(data.issue, function(issue){ 
       return { 
       value: data.issue 
       } 
       })); } 
      }); 
     }, 
     minLength: 2, 
     select: function(event, ui){ 
     // 
       } 
     }); 
     }); 

試過success: function(data) { response(data); }。也沒有工作。

控制器 -

def issue_type 
     @c = Codes.select("issue").where("codes.issue LIKE :i",{:i => "#{params[:posted_code]}%"}) 
     puts @c.to_json 
     respond_to do |format| 
     format.json { render :json=> @c.to_json } 
     format.js 
     end 
     return @c.to_json 
     end 
+0

您在這裏缺少一個報價:'url:'/ issue/issue_type,'。它應該是:'url:'/ issue/issue_type',' – Mischa

+0

@Mischa - 哦,這只是在這裏發佈代碼的錯字。我確實得到了ajax json響應,但沒有在自動完成列表中列出。 –

+0

那麼你的自動完成HTML是什麼樣的?你的select:function ...是響應被附加到自動完成列表的地方,如果那個空白,那麼你的結果不會被顯示 – Mike

回答

0

是什麼樣子,你缺少的是追加的結果,從你的控制器返回到下拉列表,從jQueryUI的拍攝

例如使用JavasScript; http://jqueryui.com/demos/autocomplete/#remote-jsonp

#function to write 'selected: <selection>' in demo 
function log(message) { 
     $("<div/>").text(message).prependTo("#log"); 
     $("#log").scrollTop(0); 
    } 
#when user selects from drop down passes selected value to log function 
select: function(event, ui) { 
      log(ui.item ? 
       "Selected: " + ui.item.label : 
       "Nothing selected, input was " + this.value); 
     }, 




    # i think this is CSS to make the drop down list appear/disappear 
open: function() { 
      $(this).removeClass("ui-corner-all").addClass("ui-corner-top"); 
     }, 

close: function() { 
      $(this).removeClass("ui-corner-top").addClass("ui-corner-all"); 
     } 

這東西可能是空白或缺失。日誌功能不是必需的,但選擇JavaScript時應該發生一些事情,以使選擇出現在文本字段中。

此外,它看起來像你的數據不正確格式化,

data: { 
        featureClass: "P", 
        style: "full", 
        maxRows: 12, 
        name_startsWith: request.term 
       }, 

成功does not看起來正確要麼。我只需複製並粘貼來自http://jqueryui.com/demos/autocomplete/#remote-jsonp的視圖源並對​​其進行自定義以適合您的應用程序。