2012-08-01 87 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