2012-09-17 58 views
2

HTML時自動完成的jQuery不起作用使用遠程源

$(document).ready(function(){ 

    $("#shop-id").autocomplete({ 
     source: "/ticket/get_sids", 
     select: function(event, ui){ 
      //... 
     } 
    });    

});

有一個奇怪的自動完成問題。如果我用這樣的靜態變量聲明來源

var data = ["0200","0032"]; 

    $("#shop-id").autocomplete({ 
     source: "/ticket/get_sids" 
    }); 

一切都如預期。

但是對於動態源URL,自動完成似乎不過濾搜索。這就像無論我輸入什麼樣的搜索文本,自動完成都會打開整個源文件而不進行過濾。例如。我輸入「g」並打開0200,0032,但它不應該是因爲「g」與源中的任何內容不匹配。

動態源返回純json,如:["0200","0032"]。這是一個PHP頁面:

return new Response(json_encode($data)); 

其在瀏覽器窗口返回

["0200","0032"] 

環境:jQuery的1.7.2的jQuery UI的1.8.2

回答

1

你錯過了,你會使用,如果讓任何意義發送回過濾器值...的數據參數。因此,您需要在返回響應數據之前實施某種形式的服務器端過濾

「我鍵入」g「並打開0200,0032,但它不應該因爲」g「不匹配任何內容來源。」

$(document).ready(function(){ 

    $("#shop-id").autocomplete({ 
     source: "/ticket/get_sids", 
     select: function(event, ui){ 
      //... 
     }, 
     data: { term: request.term } //"term" could be anything, based on parameters your server side method expects 
     //... 
    }) 
});  

我以前回答類似這樣的問題。希望這可以幫助? https://stackoverflow.com/a/11930525/1105314

+0

謝謝,這讓我對所有事情都很清楚:) –

1

當使用字符串時,自動填充插件期望該字符串指向將返回JSON數據的URL資源。它可以位於同一臺主機上或不同的主機上(必須提供JSONP)。自動填充插件不會過濾結果,而是將請求參數「term」添加到URL中,服務器端腳本應該使用該URL來過濾結果.