2012-02-25 57 views
0

我遇到了問題。在我的index.php中,我建立了到MySQL數據庫的連接並開始包含$_SESSION['name']$_SESSION['password']的會話。MySQL連接和PHP會話的Ajax問題

我把頁面content.php包含到包含PHP的DIV中()。現在我想刷新內容而無需重新加載頁面,所以我通過jQuerys load()通過Ajax再次加載content.php。 content.php現在顯示大量錯誤,因爲它無法連接到數據庫並且沒有會話信息。有沒有可能使jQuery中的load()函數像PHP中的include()一樣工作?

我希望有人能幫助我。

最好的問候,

利瑪竇

+1

你叫做session_start();在content.php?你也許需要在content.php中建立一個數據庫連接;) – Lucy 2012-02-25 15:01:20

回答

0

你有沒有包含在content.php文件所需的文件?在調用session_start()之前,您仍然需要在此文件中聲明的所有數據庫連接。

+0

如果我調用session_start(),我會從「父」文件獲取值還是需要聲明$ _SESSION ['name']再次? – matteok 2012-02-25 15:11:31

+0

@Matteo - 每當你想使用'$ _SESSION'變量時,你必須使用'session_start()'。它不會覆蓋現有的值,直到您通過設置$ _SESSION ['var_name'] =「something」來完成。 – SachinGutte 2012-02-25 15:17:46

1

讓我猜。 index.php是什麼保持MySQL連接正確?

如果soo ..然後,當你做一個ajax調用content.php然後期待一個連接,因爲它在index.php中設置它不會檢索它,因爲它是一個新的請求。

你可以將你的mysql連接從index.php移動到content.php,或者向ajax調用添加一個參數,然後檢查content.php是否設置了該參數。如果它是建立一個新的連接。

4

使用session_start()和你的mysql連接創建一個包含初始化代碼的文件。然後,將其包含在index.php和content.php中。用include_oncerequire_once,它會在兩種情況下(第一次加載和ajax加載)工作。

的init.php

<?php 
// Start or retrieve the session 
session_start(); 

// Your connection to mysql 
... 
?> 

的index.php

<?php 
// Init actions 
include_once "init.php"; 

// Your code 
.... 
?> 

content.php

<?php 
// Init actions 
include_once "init.php"; 

// Your code 
.... 
?> 

有了這個代碼,第一次你包含content.php,init.php的調用將被忽略(因爲它已經被index.php包含),並且當你從ajax調用content.php時,它將包含你的會話和數據庫連接。