2012-08-01 120 views
0

我想限制結果爲最大10,但我的代碼在下面不起作用。我得到未捕獲的SyntaxError:意外的標識錯誤就行var results = 'search-db.php';jQuery限制結果

<html> 
<head> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/base/jquery-ui.css" rel="stylesheet" type="text/css"/> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() 
     { 
      $('#textbox_postcode').autocomplete(
      { 
       var results = 'search-db.php'; 

       source: response(results.slice(0, 10));, 
       minLength: 3 
      }); 
     }); 
    </script> 
</head> 

<body> 
    <input type="text" id="textbox_postcode" value="" /> 
</body> 
</html> 
+3

好了,這是不合法的JavaScript。對象文本中不能有賦值語句。您可以在'.autocomplete()'調用之前移動它。另外我不明白爲什麼你會爲此目的在**字符串**上調用'.slice'。什麼是「響應」?那個';'在那裏也是無效的。我建議首先熟悉基本語法:https://developer.mozilla.org/en/JavaScript/Guide。 – 2012-08-01 12:30:15

+0

我是jQuery中的新成員。它可能看起來很傻。我把它留作'源:'search-db.php',minLength:3'然後它工作正常。我只需要限制輸出。 – BentCoder 2012-08-01 12:34:46

+0

更重要的是,您在嘗試任何操作之前先閱讀文檔。 – 2012-08-01 12:37:15

回答

2

正如我已經說過我的評論,這不是有效的JavaScript。

documentation描述瞭如何檢索數據的各種方法。

既然要限制顯示的項目數,你有兩個possibilites:

  • 讓服務器只返回10個項目。這將是最明智的解決方案,因爲您避免傳輸您不會使用的數據。

  • 使用回調爲source,進行Ajax請求並相應地準備數據。

這裏是第二個解決方案爲例:

$('#textbox_postcode').autocomplete({ 
    source: function(request, callback) { 
     $.getJSON('search-db.php', request).then(function(items) { 
      // success 
      callback(items.slice(0,10)); 
     }, function() { 
      // error - callback must always be called as per documentation 
      callback([]); 
     }); 
    }, 
    minLength: 3 
}); 
+0

可愛的。謝謝。 – BentCoder 2012-08-01 12:44:58

+0

打我吧。我的投票仍然是服務器端的限制。 – Dave 2012-08-01 12:47:18

+0

我總是在SQL中使用LIMIT,但是現在我想學習如何處理jQuery。 – BentCoder 2012-08-01 13:04:40