首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果AJAX请求在前一个请求的5秒内,我如何阻止它?

问如果AJAX请求在前一个请求的5秒内,我如何阻止它?
EN

Stack Overflow用户
提问于 2013-02-11 21:59:58
回答 5查看 188关注 0票数 3

我有一个评论框,可以让用户通过按enter来发表评论。它使用AJAX (jQuery)请求来完成此操作。有没有一种好的方法可以不让事件在上一条评论的5秒内触发并显示一条消息?或者这应该在服务器端处理?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-11 22:05:29

这也应该在服务器上处理,因为可以绕过javascript的限制。但是,javascript解决方案可以节省一些流量和时间:

代码语言:javascript
复制
var last_req = 0;
var limit = 5000; //miliseconds
function send_comment() {
  var time = new Date().getTime();
  if(time-last_req<limit)  {
    alert("Wait please");
    return false;
  }
  last_req = time;
  $.get("comment.php", {/*data*/}, function() {});
}
票数 1
EN

Stack Overflow用户

发布于 2013-02-11 22:01:47

根据您的用例,您可以使用throttle或debounce

http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/

或者看看这篇文章:

https://stackoverflow.com/a/8056049/190596

票数 5
EN

Stack Overflow用户

发布于 2013-02-11 22:13:01

这可以简单地通过一个布尔标志来完成。

代码语言:javascript
复制
// declare this globally at the top of your script
var allowAjax = true;


// this would be in some event handler (on enter keypress, for example)
if (allowAjax) {
    $.ajax({
        ...
        ...
    });
} else {
    // show message saying to wait
}

allowAjax = false;

setTimeout(function() {
    allowAjax = true;
}, 5000);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14813544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档