【问题标题】:using php include in jquery在 jquery 中使用 php 包含
【发布时间】:2011-01-05 03:03:11
【问题描述】:

我想要做的是在 jquery 附加属性中使用 php include。像这样:

$('a.popup[href^=#]').click(function() {
$('body').append('<div id="content" class="popup_block"><?php include( SITE_URL . 'activity/popup.php' ) ?></div>');

我的脚本在服务器端的 php 文件中,所以我可以完成此操作,但我不知道该怎么做。当涉及到 html、css 等时,我可以在 php 文件中将它和 php 结合起来,但是当涉及到 javascript 时,它的引号让我感到困惑,以及何时以及如何使用括号。这可能听起来令人困惑,哈哈。无论如何,CDATA与它有什么关系吗?我以前从未使用过它,但我至少应该知道它的用途。

【问题讨论】:

    标签: php jquery wordpress


    【解决方案1】:

    PHP 解释器只会查找&lt;?php?&gt; 标记并尝试评估介于两者之间的任何内容。它不关心周围的引号。您需要确保 PHP 所做的任何事情的结果都是有效的 Javascript。

    var foo = '<?php include 'foo.php'; ?>';
    

    变成

    var foo = 'This is the content of foo.php.';
    

    在 PHP 完成之后。

    如果foo.php中有引号,可能会变成这样:

    var foo = 'This is the 'content' of foo.php.';
    

    这是无效的 Javascript 语法。您需要转义任何可能导致此类无效语法的foo.php 字符,例如addslashes。不过这可能会很麻烦,所以我建议先寻找替代方案。

    您可以使用 JSON 对值进行编码,这绝对是语法安全的:

    var foo = <?php echo json_encode("Some string with 'quotes'."); ?>;
    

    在代码中生成代码总是很棘手,尽量不要这样做,并坚持使用 JSON 或 XML 等语言中立的数据交换格式。

    【讨论】:

    • 我需要一个特殊的插件来调用 JSON 吗?现在我正在使用 jQuery 1.4.4
    • @Sin JSON is Javascript Object Notation,它是适用于简单数据交换格式的有效 Javascript。不,你不需要任何特别的东西来使用它。
    • 好酷,还有一个问题。我试图做的是用一个包含一些服务器端代码的php文件填充这个模式,但主要是html。它一直困扰着我,例如,如果将文件包含在我的索引中并将其隐藏,它就会完美显示。但我只希望在需要时调用它,以帮助加快速度。我试过.load,但它不会通过php加载,所以这就是我尝试这条路线的原因
    • 如果我一开始就应该走这条路来实现我想要的,我真的到了我会继续努力的地步,哈哈
    • @Sin 你好像在加载一些海量数据,确实不是很好。如果你不能分解它并通过更多的原生 JS 来处理它(同样,data 交换,而不是 HTML 交换),那么一些 AJAX 可能是更好的方法.虽然很难说没有细节,但最好为它打开一个新问题。
    【解决方案2】:

    如果您 100% 确定您的包含中没有任何单引号,那么您的包含方式应该没有问题。

    如果您想将其可视化,请从包含的 php 文件中复制所有生成的代码,并将其直接粘贴到 append() 内的主页中。看看它的样子。这将使您对浏览器的最终结果有一个很好的了解。

    【讨论】:

    • 嗯,你知道,我从没想过。这适用于包含的 php 文件的内容吗?
    • 好吧,那是合法的标记吗? jquery 里面的&lt;?php?&gt;?只要确保我没有遗漏任何东西
    • 哦,是的。想想看。该页面在服务器上得到处理。服务器读取 php 并输出 html(或其他)。然后它将页面发送到您的浏览器,该浏览器读取 js 和 html。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    相关资源
    最近更新 更多