javascript - 我应该如何延迟ajax请求?

标签 javascript jquery ajax

像这个 jquery 代码,我应该如何延迟 ajax 请求?输入是一个文本字段......在我头上......谢谢帮助......

var proname = "" ;
$("input[name='proname']").keyup(function(e){
    //how should i delay this function on here ?
    if (e.which == 13) return ;
    if ($(this).val() != proname)
    {
         proname = $(this).val() ;
    }
    else
    {
     return ;
    }
    $.ajax({
         type: "post",
         data: "proname="+proname+"&page=1",
         url: "/project/searchrate",
         success: function(view){
             alert(view) ;
         }
    }) ;
}) ;

最佳答案

您想使用setTimeout

从您的使用情况来看,每次发生另一个 keyup 事件时都清除超时似乎是个好主意,以避免排队。

var requestDelay;
var proname;

$('input[name=proname]').keyup(function() {

   if(e.which == 13 || $(this).val() == proname)
      return;

   proname = $(this).val();

   // postpone the submit another 300 ms upon every new character
   window.clearTimeout(requestDelay);  

   requestDelay = window.setTimeout(function() {
      $.ajax(...);
   }, 300);


});

关于javascript - 我应该如何延迟ajax请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6992298/

相关文章:

jquery - ajax 顺序与异步选择顺序不匹配 :true

javascript正则表达式需要至少一个特殊字符

javascript - ajax追加列表组项目不触发点击事件

jquery - 列表样式未应用于 Ajax Jquery 列表

javascript - Angularjs 检索与按钮相邻的 ng-repeat

javascript - 在表格中单击按钮时读取输入文本值

Javascript/ES6 查找唯一元素并在数组中对它们进行计数

javascript - 在页面加载时从目录加载随机图像,无需列出文件名数组

javascript - jQuery AJAX 数据类型 : 'script' not working on firefox

javascript - 为什么 jqGrid loadComplete 函数中 data.length 未定义?