2014-10-27 48 views
0

我不確定是否需要Ajax,因爲我非常難以從哪裏開始,但我會描述我想要發生的事情。如何使用Ajax來延遲PHP for循環並在屏幕上回顯PHP?

我有一個PHP文件(讓我們稱之爲scan.php),它包含一個循環遍歷數組,其中包含存儲在PHP目錄中的本地文件的詳細信息。對於數組中的每個項目(文件路徑),我希望它(可能是ajax腳本?)調用另一個php文件(讓它稱爲info.php),並顯示PHP文件在屏幕上輸出的任何信息.php將數組索引中的filepath作爲參數。

在該info.php文件中有各種(動態生成的)div,它們根據用戶點擊的div將不同的值插入到數據庫中。當用戶點擊一個div時,它會向數據庫中插入一個值(通過我已經工作的ajax調用),然後顯示一條消息(我正在使用javascript window.alert)。如果該消息是成功的,那麼info.php函數結束,我們返回到scan.php。無論info.php所回顯的內容被清除,然後循環再次循環。

對不起,這有點複雜,但我不知道從哪裏開始。任何人都可以告訴我如何開始?我看了一下ajax,但坦率地說,我不知道從哪裏開始,甚至可以使用ajax來延遲PHP for循環。

這是我的劇本,我認爲會顯示info.php的,但它沒有任何呼應成「作秀」的div - 或任何東西:

function Search_file(path) { 
    $("#show").empty(); 
    var request = $.ajax({ 
     url: "info.php?path="+path, 
     type: "GET",    
     dataType: "html" 
    }); 
    $("#show").html(result); 
    request.done(function(data) { 
     alert("Next file"); 
    }); 
} 

回答

0

AJAX是異步的,所以你沒有當你設置你的html時收到你的結果。您需要將您的「顯示」代碼done處理程序中,像這樣:

function Search_file(path) { 
    $("#show").empty(); 
    var request = $.ajax({ 
     url: "info.php?path="+path, 
     type: "GET",    
     dataType: "html" 
    }); 

    request.done(function(data) { 
     $("#show").append(result); 
     alert("Next file"); 
    }); 
} 
+0

好,謝謝,但我要如何讓它等到我所做的一切,我需要爲info.php的輸出範圍內做,在退出該函數並進入for循環的下一次迭代之前?這是我的PHP for循環內scan.php:foreach(preg_grep('/^([^.])/',scandir(realpath($ row [「movies_dir」])))$ key => $ value){ echo「」; } – 2014-10-27 22:49:31

+0

嗨,不幸的是,將該行移動到您所說的應該去的地方之後,它仍然沒有輸出任何內容。 – 2014-10-27 22:58:39

+0

我認爲這是我的PHP代碼是錯誤的,因爲php for循環中的代碼甚至沒有加載簡單的window.alert測試。 – 2014-10-27 23:09:14