2011-10-18 33 views
9

Điều này đủ dễ dàng để làm việc xung quanh, nhưng nó sẽ là tốt đẹp nếu nó được bọc trong thiết lập ajax toàn cầujquery ajax - cài đặt chung. Có thể biết sự kiện/yếu tố nào kích hoạt cuộc gọi ajax không?

Khi tôi chạy một cuộc gọi ajax, tôi muốn biết phần tử/sự kiện nào kích hoạt cuộc gọi ajax trong tùy chọn beforeSend.

Có cách nào ngắn gọn để thực hiện việc này không?

Trả lời

8

Gọi lại beforeSend có hai đối số: ví dụ XMLHTTPRequest và cài đặt được sử dụng bởi cuộc gọi AJAX hiện tại.

Do đó, nếu bạn vượt qua các yếu tố kích hoạt và sự kiện trong các tùy chọn context, họ sẽ có mặt để beforeSend ngay cả khi bạn định nghĩa nó trong thiết lập toàn cầu:

$.ajaxSetup({ 
    beforeSend: function(xhr, settings) { 
     var element = settings.context.element; 
     var event = settings.context.event; 

     // Do something with 'element' and 'event'... 
    } 
}); 

$("selector").click(function(e) { 
    $.ajax("url", { 
     // your settings, 
     context: { 
      element: this, 
      event: e 
     } 
    }); 
}); 
0

Bắt đầu Đây

Global Ajax Event Handlers

Những phương pháp đăng ký xử lý để được gọi khi sự kiện nhất định, chẳng hạn như khởi tạo hoặc hoàn thành, diễn ra đối với bất kỳ yêu cầu AJAX trên trang. Các sự kiện toàn cục được kích hoạt trên mỗi yêu cầu AJAX nếu thuộc tính toàn cầu trong jQuery.ajaxSetup() là đúng, theo mặc định. Lưu ý: Các sự kiện toàn cầu sẽ không bao giờ được kích hoạt cho kịch bản lệnh miền chéo hoặc các yêu cầu JSONP, bất kể giá trị toàn cục.

.ajaxComplete() // initialize in for all ajax request and set event in jQuery.ajaxSetup() 

.ajaxComplete() - Đăng ký trình xử lý được gọi khi Ajax yêu cầu hoàn tất. Đây là một sự kiện Ajax.

Các vấn đề liên quan