2013-07-27 89 views
0

我有一個在jQuery UI 1.9.2中從遠程源加載數據的自動完成。它適用於數據在標籤中的同一個文件中,但只要我將其移動到遠程數據源,我在框中就沒有任何建議。我相信json是有效的;我多次檢查其有效性。我也嘗試了很多這個網站上的解決方案,目前還沒有運氣。jQuery自動完成遠程源不工作

jQuery代碼(已連接到jQuery的UI-1.9.2.custom.min.js):

$(document).ready(function() { 
    $('#q').autocomplete({ 
     source:'/json.php', 
     minLength: 1, 
     dataType: 'json', 
     focus: function(event, ui) { 
      $('#q').val(ui.item.label); 
      return false; 
     }, 
     select: function(event, ui) { 
      $('#q').val(ui.item.label); 
      return false; 
     } 
    }) 
    .data('ui-autocomplete')._renderItem = function(ul, item) { 
     return $('<li>') 
     .append('<a><span class="flabel">'+item.label+'</span><br /><span class="fvalue">'+item.value+'</span></a>').appendTo(ul); 
    }; 
}); 

我希望有人能幫助我在這裏。這造成了數小時的挫折。

+0

你能發佈你返回的json數據是什麼樣子嗎?您應該可以通過訪問domain.com/json.php?term=test或使用Dev Tools的Chrome網絡選項卡來獲取它。 – Miro

+0

[{「label」:「Genus」,「value」:「Cyrtophorus」},{「label」:「Species」,「value」:「Cyrtophorus verrucosus」},{「label」:「Genus」 「:」Nicrophorus「},{」label「:」Species「,」value「:」Nicrophorus orbicollis「},{」label「:」Species「,」value「:」Nicrophorus pustulatus「},{」label「 「屬」,「值」:「Sphenophorus」},{「標籤」:「物種」,「價值」:「Sphenophorus析構函數」}] @miro – croar

回答

1

您的「value:」和值之間有2或3個空字符。只在第三項。這弄亂了json的其餘部分。

所以,你必須"value":___"Nicrophorus orbicollis"
當它應該是"value":"Nicrophorus orbicollis"

很難看到,因爲他們是不可見但如果你粘貼在文本編輯器一行,並開始刪除字符,你會看到,這裏有一些空的字符。在文本編輯器中,您還可以將編碼更改爲ANSI,並且您將看到字符爲問號(「值」:「Nicrophorus orbicollis」)

檢查你的PHP代碼吐出了什麼。

+0

它們是相同的,它可能是不同的, 「' –

+0

不可以。在第三個條目之前或之後有3個不可見字符。複製這個>「value」:「Nicrophorus orbicollis」粘貼它並開始逐字刪除。當你到達半列時,你會看到它。 – Miro

+0

這很奇怪......對我來說,空間在冒號後面。而且,我使用php中的json_encode函數將php數組轉換爲json。我能做些什麼來解決這個問題? @miro – croar