我有一个页面,它使用jQuery中的load()方法加载内容。
这是它的样子(我的主页):
<?php include 'inc/header.php' ; ?>
Some Content
<button onclick="$('#loadContainer').load('contentToLoad.php')">Load</button>
<div id="loadContainer">
</div>
<?php include 'inc/footer.php'; ?>
然后我有了我的contentToLoad.php这是一个php模块,使用会话,文件中的函数等...
在header.php中,我有head标签,session_start(),以及包含contentToLoad.php良好工作的所有必要文件。
但似乎我的contentToLoad.php无法访问header.php的文件和声明。
我是否真的需要在contentToLoad.php的顶部重写所有这些内容?或者是否有一个解决方案让contentToLoad.php识别来自header.php的代码?
由于
答案 0 :(得分:2)
Jquery加载只加载html你应该包括它自己的php
<?php
include_once( __DIR__ .'/contentToLoad.php');
?>
但如果您只需要php页面的结果,请尝试更改contenToLoad.php
内的包含以使用__DIR__
相对和包含路径之间存在差异,以便它适用于您。
示例:
<?php include_once ("inc/header.php"); ?>
Some Content
<button onclick="$('#loadContainer').load('contentToLoad.php')">Load</button>
<div id="loadContainer">
</div>
<?php include_once ("inc/footer.php"); ?>
将contentToLoad.php
内的所有内容更改为include_once( __DIR__ .'/include_file.php');
答案 1 :(得分:1)
你误解了PHP和JS的互动方式,所以要回答你的问题,我只是解释一下,你应该自己找出答案。
PHP代码总是在页面加载之前运行(有一些我们不太关心的非常小的例外),或者说它很简单,而#34;页面是白色的#34;。 PHP完成执行后,它发送的输出并显示给客户端。
现在您要尝试做的是在页面加载后运行脚本,使用javascript,这很好,但服务器没有看到它与加载索引之间的任何差异,然后在几秒钟后打开contenToLoad.php的新标签页中,您所做的就是通过javascript指示浏览器将信息加载到div中。
这两个脚本在不同的时间,不同的进程中运行,作为不同的实例运行,并且不知道其他脚本是否存在。这与将一个PHP脚本包含在另一个PHP脚本中非常不同,这个脚本在非常基本的级别上与复制粘贴到您包含它的脚本相同,因此它们显然同时运行,并且您包含的脚本可以访问任何内容主机脚本声明的信息。