2010-11-11 63 views
1

我使用jQuery插件自動完成功能的Web應用程序,我簡單的JSON數據傳遞給自動完成。 當我通過這種方式傳遞數據,由可變詞。 Autocomlete工作正常。jQuery的自動完成 - data.split不是一個函數

 
var words = ["benzina","best","benátská noc","bez realitky","beroun","bershka","bernard","beskydy","belgie","berlin"]; 
$(document).ready(function() { 
    $("#suggest").autocomplete(words, { 
    formatItem: function(data, i, n) { 
     return data[0]; 
    }, 
     width: 342 
    }); 
}); 

但是,當我從服務器上下載它,我得到這個錯誤消息「data.split不是一個函數」。 我還在我的服務器端腳本中設置了頭文件Content-type:application/json。我也嘗試在autocomplete數據類型中設置選項:'json',但仍然是同樣的問題。 當我在解析自動完成選項解析數據:功能(數據){..}看起來,這些數據都OK,但我不能在formatItem閱讀。你有什麼想法嗎?

 
$(document).ready(function() { 
    $("#suggest").autocomplete("ajax.php?gsug="+whisp_id, { 
    formatItem: function(data, i, n) { 
     return data[0]; 
    }, 
     width: 342 
    }); 
}); 
+1

是什麼反應是什麼樣子? – 2010-11-11 23:53:12

+1

您正在使用哪個jQuery自動完成功能?有不止一個。 http://stackoverflow.com/questions/2421966/is-there-more-than-one-jquery-autocomplete-widget – Cheeso 2010-11-12 01:49:31

回答

4

假設你使用這個自動完成:http://docs.jquery.com/Plugins/Autocomplete/autocomplete#url_or_dataoptions

這自動完成預計,遠程數據不是一個數組,它需要一個字符串,在一個單獨的行中的每個條目。

那麼你可以做什麼: 返回預期的響應或爲請求構建自己的分析函數(可以設置爲選項)。
這個函數有返回與對象,其中所述對象具有成員的數據數組,值,結果(看一看原始解析法在autocomplete.js看到什麼是什麼)

此外:是確定ajax.php輸出是一個有效的json字符串(如果你還沒有使用php的json_encode)。並將dataType設置爲'json',就像您以前已經嘗試過的那樣。

+1

我寫了一篇文章前一陣子關於該版本的自動完成功能創建一個JSON'parse'方法 - HTTP ://blog.philipbrown.id.au/2008/10/jquery-ajax-autocomplete-with-json-data/。僅供參考,Jörn的插件已被棄用,以支持本地接受JSON數據的jQuery UI版本 - http://jqueryui.com/demos/autocomplete/#remote – Phil 2010-11-12 03:46:09

1

因爲那個url只是字符串而不是json數據,所以首先你需要獲取數據。

嘗試這種方式

$(document).ready(function() { 
    $.ajax({ 
     url: "ajax.php?gsug="+whisp_id, 
     cache: false, 
     success: function(jsondata){ 
      $("#suggest").autocomplete(jsondata, { 
      formatItem: function(data, i, n) { 
       return data[0]; 
      }, 
       width: 342 
      }); 
     } 
    }); 
});