使用$(#selector).html更改php代码不会执行,

时间:2016-02-03 14:39:10

标签: php jquery html

所以现在我现在这是一个愚蠢的问题但现在有人在没有ajax请求的情况下解决它的最佳方法,因为我觉得为一行代码创建一个新文件是愚蠢的

我正在制作一个画廊,我想要两种类型的视图:网格视图和幻灯片视图。我的幻灯片和我的网格视图都可以工作但它们位于不同的文件中。所以我写了一个简单的jquery函数来将一些PHP代码加载到html代码中。因此,当我单击一个按钮时,html代码消失,并且有PHP代码。 jquery功能可以工作,但问题是当代码被更改时,它不会将其识别为PHP代码,而只是作为字符串。

这就是我所看到的,你可以看到文本,但它需要执行该代码: You can see the text but it needs to execute that code 这是jquery函数:

$(document).ready(function(){
$("img.grid_icon").click(function() {
        $(".werkvenster").html("&lt?php include_once('resources/UberGallery.php'); $gallery = UberGallery::init()->createGallery('img/gallerij/'); ?&gt");
    })
});

我使用& lt和& gt,否则浏览器将其视为必须执行的PHP代码而不是将其视为字符串。

以下是它必须包含的html代码:

<body>  
    <section class="werkvenster">
        <img src="img/website/icon_grid.png" height="30px" class="grid_icon">
        <div class="galerij" id="galerij">

        </div>
        <button class="omlaag" id="galerij_knop">Terug</button>
        <button class="omhoog" id="galerij_knop">Verder</button>
    </section>
</body>

所有节之间的所有内容都与类&#34; werkvenster&#34;

需要改变

<?php include_once('resources/UberGallery.php'); $gallery = UberGallery::init()->createGallery('img/gallerij/'); ?&GT;

当有人点击网格图标时。

非常感谢,请不要将此标记为副本,因为我一直在寻找一个多小时来找到这个问题的答案。

3 个答案:

答案 0 :(得分:8)

似乎你需要澄清PHP和JS如何工作。

a)PHP代码在服务器端执行。所有的。没有别的

b)完全没有PHP的输出被发送到浏览器

c)JS代码在客户端执行。所有的。没有别的

如果您使用JS编写PHP代码,它只会在浏览器内部发生,而浏览器不知道如何处理它。并且在每一次PHP执行之后很久。 你不要用这个写回任何东西。

您可以做的是对返回所需输出的特定PHP文件执行AJAX请求。但你不能只是混合使用JS和PHP。它只是不起作用。

编辑:回复您关于如何在不使用AJAX的情况下解决问题的编辑

简单地说: 根本不是 。你必须从服务器获取数据,最好的方法是使用AJAX(它是为此制作而不是其他),在服务器上你必须以某种方式生成数据。最干净的方法是新文件。

答案 1 :(得分:3)

  

它不会将其识别为PHP代码,而只是将其识别为字符串

那是因为 是一个字符串:

"&lt?php include_once('resources/UberGallery.php'); $gallery = UberGallery::init()->createGallery('img/gallerij/'); ?&gt"

PHP无法在浏览器中运行,它在服务器上运行 。当页面传送到浏览器时,PHP代码已执行并完成并生成其输出。在此之后,PHP不再参与。

如果你想执行客户端代码,那就是JavaScript的用途。如果您需要代码来执行服务器端,则浏览器必须向服务器发出请求以实现此目的。页面加载,表单发布,AJAX等。它们都采用HTTP请求的形式(可能有一些数据发送到服务器),它调用PHP脚本并接收该脚本的输出作为响应。 / p>

答案 2 :(得分:0)

如果没有ajax,你可以做你想做的事。您只需创建一个包含php代码的隐藏<section>(在将其发送到浏览器之前,您必须在服务器端执行此操作)。然后在浏览器中,使用jquery从隐藏的<section>中获取内容(或者只是交换部分)

以下是一个例子:

服务器端PHP:

<body>  
    <section class="werkvenster">
        <img src="img/website/icon_grid.png" height="30px" class="grid_icon">
        <div class="galerij" id="galerij">

        </div>
        <button class="omlaag" id="galerij_knop">Terug</button>
        <button class="omhoog" id="galerij_knop">Verder</button>
    </section>
    <section id="hiddenStuff" style="display:none">
        <?php include_once('resources/UberGallery.php'); $gallery = UberGallery::init()->createGallery('img/gallerij/'); ?>
    </section>
</body>

<强> jQuery的:

$(document).ready(function(){
$("img.grid_icon").click(function() {
        $(".werkvenster").html($("#hiddenStuff").html());
    })
});