2012-02-25 26 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时,它将包含你的会话和数据库连接。