2012-08-08 42 views
18

Tôi có một trang, theo yêu cầu của người dùng, mở một hộp thoại và tải một tệp bên ngoài vào nó bằng cách sử dụng phương thức load() của jQuery.Cách lấy giá trị hiện tại từ ajaxSetup của jQuery

Tệp bên ngoài chứa liên kết đến tập lệnh (cũng có thể hoạt động như một trang độc lập) và điều đó tốt, chỉ jQuery buộc các tập lệnh đó được nạp (bằng cách thêm dấu thời gian) ngay cả khi chúng đã được tải.

Tôi cần phải thông báo cho jQuery để cho phép lưu vào bộ nhớ cache khi thấy các tập lệnh này. Câu trả lời cho một bug report gợi ý sử dụng

$.ajaxSetup({ cache: true }) 

... mà không làm việc, nhưng thay đổi các thiết lập cho tất cả các yêu cầu AJAX tương lai. Có cách nào để làm điều gì đó như:

// Get current setting - code not valid but is what I want 
var defaultCache = $.ajaxSetup("cache"); 

$.ajaxSetup({cache:true}); // Now set it to what I want 

// do stuff… 

$.ajaxSetup({cache:defaultCache}); // Set it back to the default 

Trả lời

24

bạn có thể làm điều này:

$.ajaxSetup()['cache'] 
+0

Tất nhiên, nó đã không xảy ra với tôi rằng bạn có thể truy cập tài sản ngay cả sau khi một tên chức năng. Cảm ơn vì đã trả lời nhanh chóng! – user535673

+0

Đối với một sự trở lại boolean, chúng ta có thể sử dụng: !! jQuery.ajaxSetup() ['cache'] –

+0

Điều này không làm việc cho tôi trong JQuery 1.3.2. – ovaherenow

1

Bạn có thể sử dụng này:

$.ajaxSettings['cache'] 
+0

Điều này làm việc cho JQuery 1.3.2 – ovaherenow

0
// Save current global ajax setup 
$.cachedAjaxSetup = $.extend(true, {}, $.ajaxSetup()); 

// change global ajax setup 
$.ajaxSetup({ 
    headers : { "Authorization": 123 } 
}); 

// revert back to saved ajax setup 
$.ajaxSetup($.cachedAjaxSetup); 

The (khó chịu) vấn đề là, đối tượng sẽ được hợp nhất, vì vậy đối với ví dụ trên, cài đặt headers sẽ vẫn còn vì nó không tồn tại trên đối tượng gốc.

Bạn có thể khắc phục điều này nếu bạn biết thuộc tính nào đã được thêm vào, lưu vào bộ nhớ cache và xóa chúng theo cách thủ công như vậy delete $.ajaxSettings.headers rồi thêm lại khi bạn cần cài đặt đó lần nữa. bẩn, nhưng nó hoạt động ..

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