2013-05-06 53 views
0

我目前有一個基本的網站,我通過文檔準備將內容加載到ajax中。問題是這段代碼不是「活的」,並且需要我在加載的頁面中重新包含php包含以訪問包含在其中的查詢。下面的文檔在jquery中準備好文件的實時代碼

我知道你可以通過在某些事件中使用'on'方法來解決這個問題,這樣動態加載的代碼就可以從一開始就起作用,但是當頁面剛剛加載時你將如何去做呢?在每個加載的頁面上重新包含我的php包含似乎冗餘和馬虎。

下面是一些代碼:

<?php 
    session_start(); 
    require_once('dbconnect.php'); 
    require_once('functions.php'); 
?> 

<!DOCTYPE html> 
<html> 
    <head> 
     <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
     <script type="text/javascript" src="x.js"></script> 
    </head> 
    <body> 
     <div id="container"> 
      <div id="content"> 

      </div> 
     </div> 
    </body> 
</html> 

JS:

$(document).ready(function() { 
    $('#content').load('x.php', function() { 
     alert("loaded"); 
    }); 
}); 

加載頁面:

<?php 
    //LOAD ALL WORK 
    $query = mysql_query("SELECT * FROM work"); 
    if (mysql_num_rows($query) > 0) { 
     while ($work = mysql_fetch_array($query)) { 
?> 

<div class="still_cell"> 
    <img class="still_image" src="<?php 
     print $work['image_path']; 
    ?>" /> 

    <div class="still_info"> 
     Info 
    </div> 
</div> 

<?php 
     } 
    } 
?> 
各種PHP錯誤說,查詢產生任何結果

結果,除非我包括代碼連接到嵌套在加載文件中的數據庫

+0

你能在這裏包含一些代碼嗎? – j08691 2013-05-06 02:40:45

+0

編輯帖子 – 2013-05-06 02:47:06

回答

1

PHP不知道客戶端在做什麼。
當瀏覽器進行AJAX調用時,這顯示爲對Web服務器的獨立請求。
關鍵是,PHP是針對每個輸入請求獨立執行的。

有辦法堅持多個請求之間的數據到PHP,如:

  • APC(PHP擴展):最初是爲編譯PHP腳本緩存 - 在內存中,其請求之間仍然存在還可以存儲用戶數據。
  • 文件:序列化變量並將它們存儲在一個文件中。

然而,當涉及到類似的資源(MySQL連接,文件句柄等),它被認爲是不安全的嘗試堅持他們。例如,APC和序列化將拒絕使用資源類型。

結論:對於每個請求,bootstrapping(連接到DB,聲明類,函數等)通常是

+0

感謝您的解釋! – 2013-05-06 04:13:04

2

你需要把

require_once('dbconnect.php'); 
require_once('functions.php'); 
在你的頁面

您正在嘗試進入#內容。

無論在哪裏你可以在頁面中,您呼叫的頁面是一個單獨的頁面,所以沒有任何參考它沒有連接到數據庫。

php是CGI所以所有的php代碼在發送頁面到瀏覽器之前都要在服務器端進行, 因此您需要提供對連接文件以及所有其他文件的引用以使數據庫連接在另一個文件中工作頁。