我真的需要了解在挂起时如何阻止请求ajax。让我解释一个例子:
我有一个名为“share”的输入类型,当我写东西并按下输入ajax时,取结果并在mysql中插入。如果我这样按下很长时间的输入按钮就会产生更多的结果,比如我按下了多少次输入即使在php中有控件也是如此。我认为是请求ajax的问题因为控制php我确定是对的。非常感谢你。
这是示例代码:
形式
<input type="text" class="share">
的js
$.fn.enterKey = function (fnc) { // function for check when i press enter
return this.each(function () {
$(this).keypress(function (ev) {
var keycode = (ev.keyCode ? ev.keyCode : ev.which);
if (keycode == '13') {
fnc.call(this, ev);
}
})
})
}
$('.share').enterKey(function() { // ajax request
var comment = $(this);
if (comment.val() != "") {
$.ajax({
type: "POST",
url: add_comment.urlRemove,
data: "text=" + comment.val(),
success: function(html) {
comment.val('');
},
error: function(){
alert('Error on ajax call');
}
});
}
else {
return false;
}
});
答案 0 :(得分:1)
您可以设置变量以确定是否已发送请求,如下所示:
var alreadySent = false;
$('.share').enterKey(function() {
var comment = $(this);
if (comment.val() != "") {
if(!requestSent) {
// Set variable to true
alreadySent = true;
$.ajax({
type: "POST",
url: add_comment.urlRemove,
data: "text=" + comment.val(),
success: function(html) {
// Set variable to false
alreadySent = false;
comment.val('');
},
error: function(){
// Set variable to false
alreadySent = false;
alert('Error on ajax call');
}
});
}
}
});