2011-11-02 58 views
0

我有2個函數,submit()$.ajaxclick()$.post。在使用$.ajax的函數中,我使用ajaxStart()ajaxStop(),但是在$.post沒有。例如:在第二個函數上禁用ajaxStart()

在提交:

$(document).ready(function(){ 

    $('#myform').submit(function() { 

      $(this).ajaxStart(function() { 
        $('.notice').html('Send...'); 
        $('#send').attr('disabled', 'disabled'); 
      }); 

      $(this).ajaxComplete(function() { 
        $('#send').removeAttr('disabled'); 
      }); 

      $.ajax({ 
        type: "POST", 
        url: 'server01.php', 
        data: $(this).serialize(), 
        success: function(data) { 
         switch(data){ 
          case 'success': 
           $('.notice').html('Good!'); 
           setTimeout("location.reload();",3000); 
           break; 
          default: 
           $('.notice').html('Error'); 
           break; 
         } 
        } }); 
    return false; 
    }); 

}); 

在點擊:

$(function() { 

    $('#language').click(function() { 
      $.post("language.php", { language: $(this).attr('class') }) 
      .success(function(data) { location.reload(); }) 
      .error(function() { alert("error"); }); 
      return false; 
    }); 

}); 

的問題是,當我運行click()功能激活上提交事件ajaxStart()方法。

當我使用點擊功能時,有可能禁用ajaxStart()或不運行?

回答

2

我不認爲有可能會禁用ajaxStart(),因爲它工作全局爲整個代碼。

,但如果你要隔離您對myForm的元素編碼什麼,你可以做這樣的事情:

$('#myform').submit(function() { 

      $('.notice').html('Send...'); 
      $('#send').attr('disabled', 'disabled'); 

      $.ajax({ 
        type: "POST", 
        url: 'server01.php', 
        data: $(this).serialize(), 
        success: function(data) { 
         switch(data){ 
          case 'success': 
           $('.notice').html('Good!'); 
           setTimeout("location.reload();",3000); 
           break; 
          default: 
           $('.notice').html('Error'); 
           break; 
         } 
        }, 
        complete : function() { 
         $('#send').removeAttr('disabled'); 
        } 
       }); 
    return false; 
    }); 
+0

謝謝!我以這種方式解決了。來自祕魯的問候 –

2

您還可以添加「全局」選項,你不希望Ajax請求ajaxStart被觸發。這將禁用此請求上的所有全局Ajax事件處理程序。

A,使用時list of Ajax events disabled 「全球:假」

$.ajax({ 
    type: "POST", 
    global: false, 
    url: 'server01.php', 
    data: $(this).serialize(), 
    success: function(data) { 
     switch(data){ 
      case 'success': 
       $('.notice').html('Good!'); 
       setTimeout("location.reload();",3000); 
       break; 
      default: 
       $('.notice').html('Error'); 
       break; 
     } 
    } 

});

相關問題