如何使用jQuery通过DOM插入PHP标记

How do I use jQuery to insert PHP tags through the DOM?

本文关键字:插入 PHP 标记 DOM 通过 何使用 jQuery      更新时间:2023-09-26

这是我想做的…

$("div").prepend("<div id='comment-number'><?php the_comment_number(); ?></div>");

有办法让这个工作吗?

<div class="gallery-item">
  <div class="comment-number"><!--?php echo htmlspecialchars(the_comment_number()); ?--></div>
  </span>
  <span class="gallery-icon">
    <a href="http://mysite.com/test/photos/attachment/fff/"><img src="http://mysite.com/test/wp-content/uploads/2011/06/fff-150x150.gif"></a>
  </span>
</div>

PHP是在服务器上执行的,但是JavaScript代码(jQuery)是稍后在web浏览器中执行的。因此,PHP可以生成JavaScript代码,但JavaScript不能生成PHP代码。

您发布的输出中的<!--?显示某些东西正在过滤您的PHP代码。问题不在于你的PHP代码,而在于你没有真正执行PHP代码。如果它是一个.js文件,PHP几乎肯定不能包含在内。

如果PHP正在被求值(ex。(如果这是在.php文件中的<script>标记中),这应该产生有效的JavaScript代码,将做您想做的事情:

$("div").prepend("<div id='comment-number'><?php echo htmlspecialchars(the_comment_number()); ?></div>");

1) php是SERVER端脚本
2) javascript是客户端脚本(通常)

结果是这样的:
1)用户打开你的页面http://example/
2)客户端发送GET请求到http://example/服务器
3) Apache(给定您在它上运行)捕获请求,基于服务器配置方法index.php (index.html等)。如果安装了php,你的index.php将被mod_php模块解析
& lt; & lt; & lt; & lt;这是服务器端脚本被激活的地方
4)解析index.php的结果将被传送回CLIENT
5) CLIENT将消化SERVER接收到的结果
6)如果有javascript调用,这些调用要么立即执行,要么在文档加载时执行(基于方法)

就是这样。此时,正常请求生命周期结束。

现在,如果你想要你的页面动态更新它的某些部分,这里是你怎么做:1)通常要动态更新页面,您会使用AJAX方法。当创建AJAX请求时,再次发生2-7,但这一次调用者是您的AJAX进程,接收到的信息被发送回该进程以决定如何处理它。好的,一些编码:

1) index . php

<!-- include jquery, etc //-->
<div id="comments"></div>
<script>
    function fetch_comments(){  
        $.get("ajax.php", null, function(data)){
            // this is called, when response from SERVER is received
            $("#comments").prepend(data);
            setTimeout("fetch_comments", 5000); // fetch again in 5 seconds
        }
    }
$(document).ready({
    fetch_comments();
});
</script>

2) ajax.php

<?php
//fetch comments, return them for CLIENT
echo "<p>Comment on " . date("Y-m-d H:i:s") . "<br />Lorem Ipsum</p>";

这应该有助于你理解整个过程。没有测试代码,但是应该可以。

对PHP脚本进行.ajax()查询,该脚本将为您提供the_comment_number();的值,并在ajax查询中成功事件时将结果放入$("#comment-number").prepend(result);的注释号。

记住,PHP脚本必须连接到数据库,并传递给它你需要的所有变量(如实体id,文章id,页面等)。您可以通过GET或POST来实现。

请求是由浏览器发送的,所以会话/cookie将是相同的,除非你在当前请求中改变它。

PHP是在服务器端执行的所以你不能从javascript中调用它

你可以尝试这样做,一旦页面加载

就会渲染
$("div").prepend("<div id='comment-number'>"+ <?php the_comment_number(); ?> +"</div>");

你不能直接将值添加到模板中而不是使用javascript吗?如:

<div class="gallery-item"> 
    <div class="comment-number"><?php echo (the_comment_number());?></div>
 ...
</div> 

在您的示例中,您还有一个</span>标记与不匹配的<span>标记。

如前所述,您不能直接从javascript生成或调用php代码(需要进行ajax调用或表单提交)。您需要使用jquery进行ajax调用来获取评论号,然后将其更新为div。

然而,你可能想看看这个库- http://www.phplivex.com/。它可以帮助你按照你的方式做事。它允许您在javascript中使用AJAX内部调用用户定义的php函数。

通读这次讨论,从我的理解你想要达到的目标…你得弄清楚你的页面是如何被服务的。如果是一个.php文件提供内容,那么你根本不需要Javascript,可以通过在div之间添加函数来让你的函数调用工作。

<div class="comment-number"><?php echo htmlspecialchars(the_comment_number()); ?></div>

假设您无法访问。php,或者如果是一个。html/htm页面提供的内容,那么您唯一的选择就是使用ajax。也就是说,对一个php文件(在同一域中)进行ajax调用,该文件进行函数调用并回显注释no。Ajax将检索回显的注释号。你可以在