當我使用jQuery Ajax執行異步請求時,有時響應會在800毫秒內快速返回,有時響應很慢,響應以2.50s(平均)返回,有時會掛起,並只顯示加載圖像。我不確定是因爲我的PHP代碼還是jQuery Ajax代碼。我送使用jQuery Ajax的一些值:jQuery Ajax請求的響應速度變化
function get_detail_product(obj)
{
var id = obj.id ;
var $this = jQuery('#'+id);
var Thumb = jQuery('#Scroller div.Container') ;
jQuery.each(Thumb , function(){
jQuery(this).css('border' , '#ccc 2px solid');
});
$this.parent().css('border' , '#ff8500 2px solid') ;
var load_area = jQuery('.detail') ;
//ajax request
load_area.html("");
load_area.html('<div id="loading" style="margin-top:60px;margin-left:350px;"><img src="../images/loading.gif"><br>Loding ... </div>');
jQuery.ajax({
url: 'index.php?module=product&popup=on ',
type: 'POST',
data: 'pid=' + id ,
success: function(result) {
jQuery('#response').remove();
load_area.html(result);
jQuery('#loading').fadeOut(500, function() {
jQuery(this).remove();
});
}
});
}
,並在PHP文件,我有以下代碼檢索請求的數據:
//ajax requests
if(isset($_POST['subcatid']) && is_numeric($_POST['subcatid']))
{
$subcatid = $_POST['subcatid'] ;
$products = $dbc->getAll("select * from xxproduct where xsubcatid='$subcatid'") ;
//send result
echo '<table cellpadding="0" cellspacing="0" border="0" id="ScrollerTable"><tr>';
foreach ($products as $p) : echo '<td><div style="border:#ccc 2px solid ; padding:0px;margin-top:20px ; margin-bottom:20px ; margin-left:8px ; margin-right:8px;" class="Container"><a href="javascript:void(0)" id="'.$p['xproductid'].'" onclick="get_detail_product(this)" ><img src="imgsize.phpw=100&h=100&img=../uploads/product/'.$p['xproductid'].'/'.$p['xproductid'].'__1.jpg" border="0"/></a><div style="background-color:#ccc ;text-align:center ; padding:5px; ">'.$p['xproductname'].'</div></div></td>';
endforeach ;
echo ' </tr></table>';
}
我不知道,如果你能找到我的代碼中的任何錯誤,造成延誤;另外我使用PEAR DB對象與數據庫進行交互。
當我在這個頁面中鍵入我的問題的標題時,建議將在大約500毫秒內返回。爲什麼這個Ajax交互如此之快,但我的不是?
是的,謝謝我會處理您的解決方案。偉大的建議;) 我分開ajax調用PHP文件,現在我得到更好的結果。 – mehdi 2009-07-12 16:41:28