在jquery中准备好文档后的实时代码

时间:2013-05-06 02:39:13

标签: php jquery

我目前有一个基本网站,我正在通过文件准备好的ajax加载内容。问题是这段代码不是“实时”,并且要求我在加载的页面中重新包含php包含以访问其中包含的查询。

我知道你可以通过在某些事件中使用'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错误导致查询没有产生结果,除非我包含连接到嵌入加载文件的数据库的代码

2 个答案:

答案 0 :(得分:2)

你需要把

require_once('dbconnect.php');
require_once('functions.php');

在您尝试进入#content的页面中。

无论您在何处调用该页面,您调用的页面都是一个单独的页面,因此没有任何引用它就没有与数据库的连接。

php是CGI所以在将页面发送到浏览器之前,所有的PHP代码都在服务器上被删除, 因此,您需要提供对连接文件以及所有其他文件的引用,以使数据库连接在另一页中工作。

答案 1 :(得分:1)

PHP并不知道客户端做了什么 当浏览器进行AJAX调用时,这将显示为对Web服务器的独立请求 关键是,PHP是针对每个进入请求独立执行的。

有多种方法可以在多个PHP请求之间保留数据,例如:

  • APC(PHP扩展):最初是用于编译PHP脚本的缓存 - 还可以将用户数据存储在内存中,这些数据在请求之间持续存在。
  • 文件:序列化变量并将其存储在文件中。

然而,当涉及资源(MySQL连接,文件句柄等)之类的东西时,尝试持久化它们被视为不安全。例如,APC和序列化将拒绝使用资源类型。

结论:bootstrapping(连接到DB,声明类,函数等)通常为每个请求执行