Tôi có một trang cơ bản với thanh điều hướng ở trên cùng và một thân máy bao bọc.hiển thị thanh tiến trình trong khi tải các trang bằng cách sử dụng jquery ajax trong trang web đơn
Bất cứ khi nào người dùng nhấp vào liên kết điều hướng, nó sử dụng .load
để tải nội dung trang vào div trình bao bọc.
$(this).ajaxStart(function(){$('.progressbar .bar').css('width','5%');$('.progressbar').fadeIn();});
$(this).ajaxEnd(function(){$('progressbar').hide();});
$('.ajaxspl').on('click',function(e){
e.preventDefault();
var url=$(this).data('url'),
wrap=$('body #wrap');
//clean the wrapper
wrap.slideUp().html('');
//load page into wrapper
wrap.load(url,function(){wrap.slideDown();});
});
Ví dụ về giá trị trả về từ .load
:
<div>
...content
</div>
<script>$('.progressbar .bar').css('width','30%');</script>
<link href="/assets/css/datepicker.css" rel="stylesheet" />
<script>$('.progressbar .bar').css('width','60%');</script>
<link href="/assets/css/main.css" rel="stylesheet" />
<script>$('.progressbar .bar').css('width','90%');</script>
<script>//blah blah</script>
Như bạn thấy, tôi có một thanh tiến trình Bootstrap mà tôi hiển thị trên ajaxstart()
, và trên trang mà tôi gọi tôi sửa đổi mà giá trị của thanh tiến trình sau mỗi mục được tải.
Tính năng này hoạt động tốt trên Firefox và tôi có thể thấy thanh tiến trình trong khi chờ trang tải, nhưng nó không hoạt động trên Chrome hoặc IE.
Có cách nào tốt hơn để thực hiện việc này không? Tôi đang làm điều này một cách chính xác hoặc là có một phương pháp để làm điều này?
Ví dụ: nhận được $.ajax
kích thước trang tính bằng kb và cập nhật thanh tiến trình khi đang nhận dữ liệu?
Tôi đang cố tạo một thứ tương tự như trang Đang tải khi Gmail đang tải.
Sẽ rất hữu ích nếu bạn có thể tạo http: // JSFiddle .net – Amir
Phiên bản jquery của bạn là gì? Các sự kiện AJAX phải được đính kèm vào tài liệu chỉ từ jquery 1.9. –
yp im sử dụng 1.9 – Zalaboza