我目前有一个基本网站,我正在通过文件准备好的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错误导致查询没有产生结果,除非我包含连接到嵌入加载文件的数据库的代码
答案 0 :(得分:2)
你需要把
require_once('dbconnect.php');
require_once('functions.php');
在您尝试进入#content的页面中。
无论您在何处调用该页面,您调用的页面都是一个单独的页面,因此没有任何引用它就没有与数据库的连接。
php是CGI所以在将页面发送到浏览器之前,所有的PHP代码都在服务器上被删除, 因此,您需要提供对连接文件以及所有其他文件的引用,以使数据库连接在另一页中工作。
答案 1 :(得分:1)
PHP并不知道客户端做了什么 当浏览器进行AJAX调用时,这将显示为对Web服务器的独立请求 关键是,PHP是针对每个进入请求独立执行的。
有多种方法可以在多个PHP请求之间保留数据,例如:
然而,当涉及资源(MySQL连接,文件句柄等)之类的东西时,尝试持久化它们被视为不安全。例如,APC和序列化将拒绝使用资源类型。
结论:bootstrapping(连接到DB,声明类,函数等)通常为每个请求执行 。