2012-10-06 37 views
16

Vì vậy, tôi đang làm việc trên công cụ có thể hiển thị một yêu cầu dài đối với một trang đang thực hiện.Làm cách nào để nhận được thời gian phản hồi từ cuộc gọi jQuery ajax?

Tôi đang làm điều này bằng cách sử dụng jQuery Ajax (http://api.jquery.com/jQuery.ajax/) và tôi muốn tìm ra cách tốt nhất để nhận được thời gian phản hồi.

Tôi đã tìm thấy một chuỗi (http://forum.jquery.com/topic/jquery-get-time-of-ajax-post) mô tả bằng cách sử dụng "Ngày" trong JavaScript, nhưng phương pháp này có thực sự đáng tin cậy không?

Một ví dụ về mã của tôi có thể là dưới đây

$.ajax({ 
    type: "POST", 
    url: "some.php", 
}).done(function() { 
    // Here I want to get the how long it took to load some.php and use it further 
}); 
+1

xem câu trả lời này: http://stackoverflow.com/a/3700307/889678 – mgraph

Trả lời

32

Phương pháp đơn giản nhất là nên thêm var ajaxTime= new Date().getTime(); trước khi cuộc gọi Ajax và trong done có được thời gian hiện tại để tính toán bao lâu cuộc gọi Ajax đã xuống chế tạo.

var ajaxTime= new Date().getTime(); 
$.ajax({ 
    type: "POST", 
    url: "some.php", 
}).done(function() { 
    var totalTime = new Date().getTime()-ajaxTime; 
    // Here I want to get the how long it took to load some.php and use it further 
}); 

Hoặc trong trường hợp bạn muốn biết khoảng thời gian này ở phía máy chủ. Làm tương tự và in thời gian trong giá trị trả lại từ some.php.

+12

Bạn có thể sử dụng 'Date.now()' thay vì 'new Date(). GetTime()'. Nó không chỉ lưu các ký tự mà còn tiết kiệm việc tạo ra một đối tượng 'Date'. –

+1

@ DanielBöhmer Về 'Date.now()' - nó không có sẵn trong một số trình duyệt cũ hơn (ví dụ IE8), bạn có thể cần một polyfill, xem [MDN] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now) –

+0

downvoting - sẽ không hoạt động đối với nhiều yêu cầu – Anonymous

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