2010-08-13 18 views
0

我有以下情況:獲得通過jQuery負載從PHP腳本結果()php腳本前函數結束

的jQuery:

$(function(){ 
     $('input[type="button"]').click(function(){ 
     $('#result').load('script.php'); 
     }); 
}); 

的script.php:

<?php 
    echo "1"; 
    sleep(2); 
    echo "2"; 
    sleep(2); 
    echo "3"; 
?> 

目前jquery加載函數將等待php腳本完成,然後顯示結果到t因此在這種情況下,它會等待4秒,然後顯示123.

我想要實現的是讓jQuery加載函數在PHP腳本完成之前單獨返回結果。通過分開我的意思是看到在目標股利1然後等待2秒,然後看到2,然後再2秒,然後3.

這是可能與我的例子嗎?

+0

我想你需要單獨的請求。 – tcooc 2010-08-13 16:15:59

回答

1

壞主意,時勢在服務器端,你應該這樣做與setTimeout函數(S)在客戶端上:從服務器得到即時響應,並使用它,只要你喜歡的客戶端上:

$.get('script.php', function(data){ 
    $('#div1').yourcode(); 
    setTimeout(function(){ 
     $('#div2').yourcode(); 
    }, 2000); 
}); 
+0

感謝您的快速和迅速的答案。 我的問題的關鍵不在於超時或睡眠,我只是在示例中使用睡眠以更好地瞭解我想要實現的目標。 讓我試着重新表達自己的問題(對不起,如果我沒有正確表達自己,但英文不是我的母語) 所以,我的觀點是:是否可以通過jquery加載函數從php腳本中獲取信息, PHP腳本實際上完成? 例如,如果你在php中有多個回聲,要在同一個div中分別檢索每個回聲 – Alex 2010-08-13 16:37:52

0

我不認爲你可以用jQuery來做到這一點,因爲據我所知,你所傳遞的任何回調/處理函數在XMLHttpRequest完成(或達到就緒狀態4意味着請求完成)之後纔會運行。您可能可以在php中使用flush()在echo後發送輸出,然後使用您自己的ajax對象/腳本並查找另一個就緒狀態,如3應包含部分請求數據。儘管主要是因爲瀏覽器與就緒狀態不一致,但我還沒有看到預先製作的庫能夠做到這一點,所以您可能必須自己寫一些東西。

Some info about using ready states

1

號開箱,這不會與jQuery.load是可能的()。前面兩個答案是正確的 - 你需要修改XMLHttpRequest,這將是一個非常複雜的項目,或者你必須使用Javascript(setTimeout)輪詢你的服務器,並從服務器獲取離散值以顯示在客戶端。在不瞭解你想要做什麼的情況下,我會建議使用後一種方法(輪詢),正如達瑪所指出的那樣。