2011-04-24 129 views
1

我用jQuery做一個Ajax調用,這樣的事情:Ajax/jQuery到PHP並返回?

$.ajax({ 
    type: "POST", 
    url: ajaxurl, 
    data: data, 
    success: function(response){ 
     alert(response); 
    } 
}); 

我從PHP得到的數據是這樣的:

$data_array = get_data(); 
foreach($data_array as $data) 
{ 
    echo $data; 
} 

PHP慢

的PHP數據功能調用速度很慢,因爲它從數據庫獲取非常多的數據,可能會獲取圖像,進行一些json調用和其他緩慢的事情。

一個輪的時候

爲此我需要的PHP代碼只是做一個圓,然後Javascript並做循環的下一輪。

不止一種解決方法?

可能有多種方法可以做到這一點。哪一個是首選?想到Javascript foreach-loop,JSON和全局JavaScript變量。

+2

什麼是JSON **調用**? – 2011-04-24 13:20:34

回答

2

您可以將ajax函數中的返回類型設置爲xml或json,然後以這兩種類型之一返回數組。我覺得JSON是您解決方案的首選。

1

我稍微反對在數據庫中存儲實際圖像。我更喜歡只爲他們保留一個獨特的鏈接,然後返回,而不是實際的圖像。這會加快查詢的速度。我同意mad_programmer JSON js會被你的情況所偏好。

0

你可以操縱你的查詢來做一個限制。所以像這樣:

var total_count = ajax_get_sql('select statement with count'); 
var curr_count = 0; 
var set_number = 10; 
var select_statement_without_limit = 'statement'; 

setTimeout('fetch_data()',0); 

... 

function fetch_data() 
{ 
     if(curr_count < total_count) 
     { 
      ajax_get_sql(select_statement_without_limit with limit appended); 
      curr_count = curr_count + set_number; 
      setTimeout('fetch_data()',0); 
     } 
} 

所有你的ajax調用設置爲等待響應而不是繼續。我會保持PHP的SQL邏輯,但使用JavaScript來多次查詢服務器。這會阻止你的JS腳本執行很長的錯誤。我並沒有真正考慮到數據操作,但你可以弄明白!