我有一个主要基于本教程的自动完成实现:http: //viralpatel.net/blogs/tutorial-create-autocomplete-feature-with-java-jsp-jquery
然而,与文章相反,我从数据库中获取记录并在 jsp 中使用 out.println(recordValue); 打印出来。这个jsp被称为:
<input type="text" id="country" name="country"/>
<script>
$("#country").autocomplete("getdata.jsp");
</script>
这些记录来自包含数百万条记录的表,因此我只放置我用“rowNum < 10;”过滤的前 10 条记录。
这对普通数据非常有用。当查询返回的记录超过 10 条时,问题就出现了,并且可能还有更多记录……例如,假设我有如下数据:Test10,Test11,Test12,Test13,Test14,Test15,Test16,Test17,Test18,Test19,Test20假设我们在键入 Test 后最初进行查询以获取记录,并返回从 Test10 到 Test19 的第 10 条记录 - 这是正确的。但是现在当用户键入 Test2 时,我们应该再次查询后端,但这对我来说没有发生......</p>
如前所述,返回所有记录根本不是一种选择,因为可能有数百万条记录。但是当输入一个新字符时(比如在输入 Test 后输入 2),我们需要回到上面脚本中调用的 jsp 内的服务器,以便调用 getData。
有没有办法解决这个问题?
我已经尝试过改成这个,但是没有用
<input type="text" id="country" name="country"/>
<script>
$("#country").autocomplete({
change: "getdata.jsp"
});
</script>
谢谢!
由于我无法在没有 50 个代表的情况下添加评论,因此编辑问题以回复 @Barmar ...
感谢您的回复@Barmar。我确实尝试过在 Firefox 和私有模式下禁用缓存,所以希望它不会记住任何东西。但我仍然看到相同的行为
为了进一步调试,我在 jquery.autocomplete.js 中添加了一个警报,似乎该函数确实在按键时被调用,但它仍然不会将请求传播到后端的服务器端。似乎javascript正在吞噬请求,或者可能有一些逻辑决定是否将请求发送到服务器。我正在进一步研究这个问题。
但是,看起来很奇怪的是像 jquery 这样的标准产品可能有问题,所以也许我缺少一些设置/配置。但我还没有弄清楚,那可能是什么。
任何帮助表示赞赏!