2010-11-24 67 views
0

我試圖弄清楚需要多長時間做一個AJAX請求,當按鈕被點擊到目前爲止,我有這樣的代碼:找出需要多少時間做一個AJAX請求

$(document).ready(function() { 
    $('#start').click(function() { 
     start_timer(); 
     var record = $.ajax({url: "ajax.php?getSensor="+devid, async: false }).responseText; 
     $("textarea#recordTextbox").val($('textarea#recordTextbox').val()+record+"\n"); 
     stoptimer(); 
    }); 
}); 

而且我的定時器功能是這樣的:

function start_timer() { 
    display(); 
} 
function stoptimer() { 
    clearTimeout(timer); 
    timer = 0; 
} 
function display(){ 
    if (millisec>=9){ 
    millisec=0 
    seconds+=1 
    } 
    else 
    millisec+=1 
    $("#time").html(seconds + "." + millisec); 
    timer = setTimeout("display()",100); 
    } 

Ajax請求被正確發送,但計時器讀取0.1秒每次,我知道,它需要比這更長,因爲網頁掛至少3秒鐘。出於某種原因,定時器在關閉AJAX協議時不會運行。

任何意見將有所幫助,謝謝!

+2

我知道這是您要完成的工作,但在Google Chrome中,您可以通過按下「CTRL-SHIFT-J」並查看控制檯來查看響應時間。那麼,或者你可以使用FireFug或Chrome的FireBug插件。 – Dutchie432 2010-11-24 21:36:41

+0

非常有用,謝謝 – 2010-11-24 21:56:33

回答

1

我不能讓定時器工作,所以我使用的日期()的getTime()是這樣的:

var start_time = new Date().getTime();  
    $.ajax({url: "ajax.php?getSensor="+devid, async: false, success: function(data){ 
     $("textarea#recordTextbox").val($('textarea#recordTextbox').val()+data+"\n"); 
     request_time = new Date().getTime() - start_time; 
    }}); 
    $("#time").html(request_time/1000); 
3

你可以做到這一點更容易使用的異步請求這樣:

$(document).ready(function() { 
    $('#start').click(function() { 
     start_timer(); 
     $.ajax({url: "ajax.php?getSensor="+devid, async: false, success: function(data){ 
      $("textarea#recordTextbox").val($('textarea#recordTextbox').val()+data+"\n"); 
      stoptimer(); 
     }}); 
    }); 
}); 
+1

是的,OP的帖子中的定時器不工作的原因是因爲它沒有在AJAX回調中停止。 – 2010-11-24 21:37:53

1

如果你這樣做是爲了幫助開發,使用firebug

0

在它只需運行YSlow的。

對於確定您的頁面加載和AJAX請求出現問題的通用方法,請使用YSlow addon for Firefox

它會告訴你,你從來沒有夢想過的東西,這會減慢你的代碼。