JQuery load()不会识别pre php包含

时间:2017-05-27 16:39:37

标签: javascript php jquery

我有一个页面,它使用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的代码?

由于

2 个答案:

答案 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脚本中非常不同,这个脚本在非常基本的级别上与复制粘贴到您包含它的脚本相同,因此它们显然同时运行,并且您包含的脚本可以访问任何内容主机脚本声明的信息。