我正在使用ajax来获取一些数据。问题是ajax请求来自于悬停按钮,因此很容易垃圾邮件可能导致失败的请求error 404 or error 500
。这是我的ajax代码:
$.ajax({
url: location.origin+'/getcat',
data : {
't': id
},
success: function(){ alert("I'm handsome"); }
});
问题是如何防止此垃圾邮件请求?
答案 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;