2011-12-21 184 views
0

我已經使用JQuery UI自動完成來減少我必須在下拉菜單中顯示的部分列表,我也使用json傳遞部分列表,但是我無法看到結果,我相信這是對我對JQuery的Map函數的有限理解。JQuery自動完成不顯示

我有以下的JSON

{"parts":[{"partNumber":"654356"},{"partNumber":"654348"},{"partNumber":"654355-6"},{"partNumber":"654355"},{"partNumber":"654357"},{"partNumber":"654357-6"},{"partNumber":"654348-6"}]} 

其上JSONLint驗證正確

我觀看了職位和利用螢火蟲的反應,看到他們是正確的,但我的自動完成似乎不顯示,最接近我這樣做,是當我顯示整個JSON字符串,每個字符都有一個新行。

這裏是我JS

$('.partsTextBox').autocomplete({ 
    minLength: 3, 
    source: function(request, response) { 
     $.ajax({ 
      url: './PartSearch.ashx', 
      data: $('.partsTextBox').serialize(), 
      datatype: 'JSON', 
      type: 'POST', 
      success: function(data) { 
       response($.map(data, function(item) { 
        return { label: item.partNumber } 
       })) 
      } 
     }); 
    }, 

    select: function(e) { 
     ptb.value = e; 
    } 
}); 

任何幫助,任何人都可以給將不勝感激。已編輯以包括soderslatt

+0

我看不出你是否使用回調,你能告訴我嗎?我的眼睛有點痠痛 – AlfredoVR 2011-12-21 07:43:42

+0

對不起,我不確定你的意思,如果你的意思是我使用檢索的數據,那麼我相信我在成功功能。 – Deviland 2011-12-21 07:45:21

+0

在* Firebug控制檯*中是否顯示任何錯誤? 「響應」函數是否正確解析? – 2011-12-21 08:00:23

回答

0

jQuery的自動完成插件格式給出助陣必須

{ 「查詢」: 「your_query」, 「建議」: 「suggestions_1」, 「suggestions_2」], 「數據」: [your_data]}}

,並使用自動完成該

$('#your_input').autocomplete({ 
    minChars: 2 
    , serviceUrl: './PartSearch.ashx' 
    , deferRequestBy: 50 
    , noCache: true 
    , params: { } 
    , onSelect: function(value, data) { 

    } 
    , ajaxCallBack: function() { 
      response($.map(data, function(item) { 
       return { label: item.partNumber} 
      })) 
    } 
}); 
+0

2個問題,你是說我需要改變我的JSON格式?而且我找不到你在文檔中提供的自動完成選項(我可能錯過了這裏的東西)? – Deviland 2011-12-21 08:31:24

+0

嗯也許其他版本的自動完成, 我使用這個 http://www.devbridge.com/projects/autocomplete/jquery/ – 2011-12-21 08:37:19

+0

解釋它我使用JQuery UI自動完成,我已更新原始問題來指定此,我我正在研究你使用的插件。 – Deviland 2011-12-21 08:42:12

1

我不知道,但不應部分:第一部分是數組?

http://jsfiddle.net/jfTVL/3/

+0

誰我UPsdated你的代碼中有我的JSON的一個片段,像這樣 $(函數(){VAR 部分= [ { 「部分號碼」: 「654356」},{ 「部分號碼」: 「654348」},{ 「部分號碼」: 「654355-6」},{ 「部分號碼」: 「654355」},{ 「部分號碼」: 「654357」 },{「partNumber」:「654357-6」},{「partNumber」:「654348-6」}]; $(「#tags」).autocomplete(source:function(request,response){ ($。map(parts.part,function(item){ return {label:item.partNumber} })) } }); }); 還是我第一次的jsfiddle沒有輸出:( – Deviland 2011-12-21 10:10:06

+0

我改成了一個數組,跟你的新結構,新的jsfiddle如上所述,HTTP://jsfiddle.net/jfTVL/6/ – anderssonola 2011-12-21 10:19:10

+0

我看到你的jsfiddle作品和我不能看到我在做什麼與我的ajax查詢返回的數據是不同的響應?我看到結構回來並傳遞到響應函數,但項目仍然只包含一個suingle字符數組現在真正混淆現在作爲您的示例工程好嗎? – Deviland 2011-12-21 10:37:07

1

jQuery autocomplete page

本地數據可以是字符串的簡單陣列,或者它包含每個項目的對象的陣列中,與任一標籤或值屬性或二者。標籤屬性顯示在建議菜單中。在用戶從菜單中選擇一些內容後,該值將被插入到輸入元素中。如果只指定了一個屬性,它將用於兩個,例如。如果您僅提供值屬性,則該值也將用作標籤。

這意味着如果你使用「value」而不是「partNumber」,你應該想要你想要的。