开发过程中,发现jQuery中的ajax原本应该只发送一次请求,事实上却连续发送了多次。
解决办法是,在发送前作一个标记,检测是否已经发送过,成功或者失败再收回标记。
var th = $(this);
$.ajax({
type: "GET",
url:"/test.php",
beforeSend: function(){
if($(th).attr('data-sending')==1) return false;//如果已经在发送,则取消本次发送
$(th).attr('data-sending','1');//发送前作标记,避免纠结的浏览器重复发送
return true;
},
success: function(data){
//发送成功的操作
$(th).attr('data-sending','0');
return false;//取消其它操作,比如对超连接的点击事件
},
error: function(s){
alert("ajax错误:"+s);
$(th).attr('data-sending','0');
}
});