2017-09-23 117 views
0

我正在使用jquery在文本字段中捕獲用戶輸入,然後顯示可能選項的下拉列表。jquery自動完成結果顯示爲單個字母,而不是單詞

該腳本調用一個php頁面,該頁面搜索並返回結果給ajax請求。

哪裏有由PHP返回它們看起來像

["Site 4,"Site 2","Site 1","Site 6","Site 7","Site 0"] 

的單個值會出現像

["Site 4"] 

我在下降能得到什麼下來如下(基於單多個值條目)

[ 
LINE 
" 
S 
i 
t 
e 
LINE 
4 
" 
] 

其中LINE是Site之間的分隔符& 4並顯示引號和括號。

我jQuery是:

$('#site').autocomplete({ 
    source: function(request, response) { 
     $.ajax({ 
      url : 'siteCheck.php?name=' + request.term, 
      success: function(data) { 
       console.log (data) 
       response($.map(data, function(item) { 
        return { 
         label: item, 
         value: item, 
         data : item 
        } 
       })); 
      } 
     }); 
    }, 
    autoFocus: true,    
    minLength: 1, 
     select: function(event, ui) { 
      $('#site').val(ui); 
     }    
    }); 

我如何得到這個返回的下拉列表中爲

Site 4 
Site 2 
Site 1 
Site 6 
Site 7 
Site 0 

,而不是單個字母!

感謝

回答

1

首先:它是一個錯字,你的JSON數組有第一個元素沒有閉合"

第二:根據自動完成的文檔,source,只需將數組作爲簡單數組傳遞,就像您已經擁有它一樣。無需將其轉換爲標籤/值。

remote datasource的例子,他們只是加入source: 'remoteScript.php'

所以你可以只使用

$('#site').autocomplete({ 
    source: 'siteCheck.php?name=' + request.term, 
    autoFocus: true, 
    minLength: 1, 
    select: function(event, ui) { 
     $('#site').val(ui); 
    } 
}); 

編輯:

嘗試修改你的服務器端腳本來接受term作爲GET參數,那麼您的網址可以刪除該部分,並添加詞語,因爲自動完成功能可以爲您提供:

source: 'siteCheck.php', //should accept term as parameter 
+0

感謝您的回覆,是的,這是一個錯字!我會試試這個,讓你知道我是怎麼做到的。 – Tom

+0

完美無瑕,完全符合我的需求,謝謝:) – Tom

相關問題