ajax防止多次點選重複提交
阿新 • • 發佈:2019-02-09
多次點選提交按鈕的時候重複提交的問題
$(this).unbind('click', clickHandler);
$.ajax({
url : 'url',
dataType : 'json',
type : 'post',
success : function (data) {
if (data.success) {
//提交成功做跳轉處理
} else {
//處理失敗,重新繫結點選事件
alert(data.message);
$(self).click(clickHandler);
}
}
});
}
$('#buntton').click(clickHandler);
解決方法很簡單,當點選提交按鈕的時候,把這個提交這個處理函式給解綁掉,請求完成的時候在繫結回來:
1.如果繫結的是有名函做法如下:
$(this).unbind('click', clickHandler);
$.ajax({
url : 'url',
dataType : 'json',
type : 'post',
success : function (data) {
if (data.success) {
//提交成功做跳轉處理
} else {
//處理失敗,重新繫結點選事件
alert(data.message);
$(self).click(clickHandler);
}
}
});
}
$('#buntton').click(clickHandler);
2.當用匿名函式繫結的時候需要用一個變數把arguments.callee存起來,一遍請求完成後重新繫結示例程式碼:
$('#buntton').click(function () {
var f = arguments.callee, self = this; //注:callee 屬性是 arguments 物件的一個成員,他表示對函式物件本身的引用
$(self).unbind('click', f);
$.ajax({
url : 'url',
dataType : 'json',
type : 'post',
success : function (data) {
if (data.success) {
//提交成功做跳轉處理
} else {
//處理失敗,重新繫結點選事件
alert(data.message);
$(self).click(f);
}
}
});
});