【问题标题】:Ajax problems with MySQL connection and PHP sessionMySQL 连接和 PHP 会话的 Ajax 问题
【发布时间】:2012-03-15 17:59:37
【问题描述】:

我遇到了一个问题。在我的index.php 中,我建立了与 MySQL 数据库的连接并启动了一个包含$_SESSION['name']$_SESSION['password'] 的会话。

我使用 PHP 的 include() 将页面 content.php 包含到一个 DIV 中。现在我想在不重新加载页面的情况下刷新内容,所以我通过 jQuerys load() 再次通过 Ajax 加载 content.php。 content.php 现在显示大量错误,因为它无法连接到数据库并且没有会话信息。是否有可能让 jQuery 中的 load() 函数像 PHP 中的 include() 一样工作?

我希望有人可以帮助我。

最好的问候,

马特奥

【问题讨论】:

  • 你有没有调用 session_start();在 content.php 中?还有..您可能还需要在 content.php 中建立数据库连接;)

标签: php jquery mysql ajax session


【解决方案1】:

使用 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 时,它将包含您的会话和数据库连接。

【讨论】:

    【解决方案2】:

    让我猜猜。 index.php 是什么保持 mysql 连接对吗?

    如果如此.. 那么当你对 content.php 进行 ajax 调用时,它会期望一个连接,因为它在 index.php 中设置它不会检索它,因为它是一个新请求。

    您可以将 mysql 连接从 index.php 移动到 content.php 或向 ajax 调用添加一个参数,然后检查 content.php(如果该参数已设置)。如果是建立新的连接。

    【讨论】:

      【解决方案3】:

      您的 content.php 文件中是否包含所需的文件?除了调用 session_start() 之外,您还需要在此文件中声明的所有数据库连接。

      【讨论】:

      • 如果我调用 session_start() 我会得到“父”文件中的值还是必须再次声明 $_SESSION['name']?
      • @Matteo - 当你想使用$_SESSION 变量时,你必须使用session_start()。并且它不会覆盖现有值,直到您通过设置 `$_SESSION['var_name']="something" 。
      猜你喜欢
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 2014-12-08
      • 1970-01-01
      • 2017-12-18
      • 1970-01-01
      相关资源
      最近更新 更多