2012-10-06 3 views
16

Donc je travaille sur un outil qui peut montrer longtemps une requête à une page. Je le fais en utilisant jQuery Ajax (http://api.jquery.com/jQuery.ajax/) et je veux trouver le meilleur moyen d'obtenir le temps de réponse.Comment obtenir le temps de réponse d'un appel ajax jQuery?

J'ai trouvé un fil (http://forum.jquery.com/topic/jquery-get-time-of-ajax-post) qui décrit l'utilisation de la "Date" en JavaScript, mais cette méthode est-elle vraiment fiable?

Un exemple de mon code pourrait être ce ci-dessous

$.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

voir cette réponse: http://stackoverflow.com/a/3700307/889678 – mgraph

Répondre

32

La méthode la plus simple serait d'ajouter var ajaxTime= new Date().getTime(); avant l'appel Ajax et dans le done obtenir l'heure actuelle pour calculer combien de temps l'appel Ajax a pris à faire.

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 
}); 

Ou si vous voulez savoir combien de temps cela prend sur le côté serveur. Faites de même et imprimez l'heure dans la valeur renvoyée par some.php.

+12

Vous pouvez utiliser 'Date.now()' à la place de la plus longue 'new Date(). GetTime()'. Il enregistre non seulement les caractères mais enregistre également la création d'un objet 'Date'. –

+1

@ DanielBöhmer En ce qui concerne 'Date.now()' - il n'est pas disponible dans certains anciens navigateurs (par exemple IE8), vous pourriez avoir besoin d'un polyfill, voir [MDN] (https://developer.mozilla.org/en/docs/Web/JavaScript/Référence/Global_Objects/Date/now) –

+0

downvoting - ne fonctionnera pas pour plusieurs requêtes – Anonymous