jQuery自动建议列表冻结铬,或者非常慢

时间:2016-01-01 05:30:53

标签: php jquery google-chrome

我尝试使用你的脚本管:https://www.youtube.com/watch?v=YqMtE8UO-xw 我的汽车建议清单现在已经冻结铬,但不确定为什么铬现在冻结了。 我有以下查询:

<script type="text/javascript" src="scripts/jQuery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#searchquery").keyup(function(){
$.get("suggest.php", {searchquery: $(this).val()}, function(data){
$("datalist").empty();
$("datalist").html(data);}); }); });</script>
<script type="text/javascript">     
$(document).ready(function(){
$("#searchquery2").keyup(function(){
$.get("suggest1.php", {searchquery2: $(this).val()}, function(data){
$("datalist").empty();
$("datalist").html(data); }); });});</script>

&安培;我有以下输入:

<th width="170" scope="col"><input type="text" size="25" name="searchquery2" id="searchquery2" placeholder="Business Type" list="datalist1"/><datalist id="datalist1" /> </datalist> </th> <th width="170" scope="col"><input type="text" list="myCompanies" size="25" name="searchquery" id="searchquery" placeholder="Suburb, City, or Postcode"/><datalist id="myCompanies" /> </datalist></th>

1 个答案:

答案 0 :(得分:0)

发送许多ajax请求可以使浏览器冻结我建议您对请求进行超时并将最后一个值发送给服务器。超时等待用户不输入任何内容然后发送请求。我还建议使用input事件而不是keyup。 你的代码应如下所示:

$(document).ready(function() {
    $("#searchquery").on('input', function() {
        clearTimeout(window.t1);
        window.t1 = setTimeout(function() {
            $.get("suggest.php", {
                searchquery: $(this).val()
            }, function(data) {
                $("datalist").empty();
                $("datalist").html(data);
            });
        }, 1000);
    });


    $("#searchquery2").on('input', function() {
        clearTimeout(window.t2);
        window.t2 = setTimeout(function() {
            $.get("suggest1.php", {
                searchquery2: $(this).val()
            }, function(data) {
                $("datalist").empty();
                $("datalist").html(data);
            });
        }, 1000);
    });
});