防止ajax调用反复触发

时间:2011-09-27 02:17:25

标签: jquery ajax

$('.myDiv').click(function(event){
$.ajax({
        url: '',
        dataType: 'json',
        success: function(json) {

            for (var i = 0; i < json.length; i++) {
        var response = json[i];
         $('.result_new').append('<p>' + response.name + '</p>');
    }
        //$('.content').append('<p>' + response.total + '</p>');

        }
    });

})

event.stopPropagation()

不会阻止重复调用ajax调用。在Jquery中有这个函数吗?

2 个答案:

答案 0 :(得分:2)

$('.myDiv').click(function(){
  if( !$(this).hasClass('loading') ) {
    //add control class
    $(this).addClass('loading');
    //do ajax...
    $.ajax({
      success: function() {
        $('.myDiv').removeClass('loading')
      }
    })
 }

});

答案 1 :(得分:1)

event.stopPropagation()只能阻止事件冒泡(从.myDiv到它的父元素,直到到达窗口)。它不会阻止函数执行。

您可以使用各种方法来识别请求是否已发送,例如set .data(),例如:

$(".myDiv").click(function() {
    if (typeof $(this).data('inTheMiddleOfAnAJAXCall') == "undefined") {
        $(this).data('inTheMiddleOfAnAJAXCall', true);
        // Create an AJAX Call
    }
});