防止ajax返回失败,经常请求?

时间:2017-09-15 10:59:09

标签: javascript jquery ajax

我正在使用ajax来获取一些数据。问题是ajax请求来自于悬停按钮,因此很容易垃圾邮件可能导致失败的请求error 404 or error 500。这是我的ajax代码:

$.ajax({
          url: location.origin+'/getcat',
          data : {
                   't': id
                 },
          success: function(){ alert("I'm handsome"); }
});

问题是如何防止此垃圾邮件请求?

2 个答案:

答案 0 :(得分:0)

您可以使用setTimeout()

进行制作
$(document).ready(function(){
var timer;
var delay = 1000;
    $("p").hover(function(){
        timer = setTimeout(function() {
        console.log("Requesting")
        $.ajax({
                  url: location.origin+'/getcat',
                  data : {
                           't': id
                         },
                  success: function(data){ 
                        alert('Im handsome'); 
                      }
                  });
        }, delay);
        }, function(){
        clearTimeout(timer);
        console.log("Canceled request")
    });
});

答案 1 :(得分:0)

您可以使用.one(),它只会使用一次事件处理程序。然后,当冷却期结束时,您可以再次执行.one()



(function enableRequests() {
    console.log("listening for next mouse move");
    $('#spn').one("mousemove", function() {
        console.log("launching request, and cooling down for 5 seconds");
        $.ajax({
            url: "https://jsonplaceholder.typicode.com/posts/1",
            success: function () { console.log('response from server') }
        });
        setTimeout(enableRequests, 5000); // 5 second cooldown period
    });
})(); // execute immediately

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<span id="spn">Hover here</span>
&#13;
&#13;
&#13;

相关问题