【问题标题】:How can I echo PHP within jQuery?如何在 jQuery 中回显 PHP?
【发布时间】:2011-05-05 09:59:00
【问题描述】:

我正在尝试在我的一个 jQuery 函数中使用我的一个 PHP 函数。我知道它不会执行代码,但我需要回显函数调用,以便服务器可以处理它。到目前为止,我有这个:

    .html('<h2>Please <a href=""<?php echo absolute_url("login.php"); ?>"">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)')

但它无法正常工作。我听说我需要用引号将 Javascript 中的实际 php 函数调用括起来,我做了(单引号和双引号),但他们没有做到这一点。有什么想法吗?

任何想知道的人的整个功能:

      // login or register notification
$(document).ready(function() {
    $('.notice').click(function() {
        $('.error-notification').remove();
        var $err = $('<div>').addClass('error-notification')
        .html('<h2>Please <a href=""<?php echo absolute_url("login.php"); ?>"">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)')
        .css('left', $(this).position().left);
        $(this).after($err);
        $err.fadeIn(150);
    });
    $('.error-notification').live('click', function() {
        $(this).fadeOut(150, function() {
            $(this).remove();
        });
    });
});

【问题讨论】:

  • 你试过没有absolute_url函数的文本吗

标签: php javascript jquery echo


【解决方案1】:

您不能 -- php 命令在页面加载期间运行 -- 您的页面已经加载并呈现。你应该知道 php 是 服务器端 代码。这意味着当您的网站被请求时,您的服务器会生成输出文件并将所有回显值填充到您的输出文件中。客户端获取包含所有变量的页面回显到您的页面 - 没有向客户端提供任何 php 命令,它们是您的服务器将网页编译回客户端的指令。

为什么不在页面加载期间将 absolute_url("login.php") 存储在 javscript 变量中

var loginUrl = "<?php echo absolute_url("login.php"); ?>";

然后

.html('<h2>Please <a href="' + loginUrl + '">Login</a>')....

编辑——哦,等等——你正在这样做:P 抱歉,你的 js 文件链接到你的页面,它是一个指向要包含的文件的存根。这不会注册 php 命令。

【讨论】:

  • href 的值缺少引号。应该是.html('&lt;h2&gt;Please &lt;a href="' + loginUrl + '"&gt;Login&lt;/a&gt;')loginUrl 的值也应该被引用并准备用 javascript 解析,我会写 var loginUrl = &lt;?php echo json_encode(absolute_url('login.php')); ?&gt;;
  • gettin 累了错过了引号——为什么需要将其转换为 json?它是否返回一个数组?否则,如果它是一个简单的字符串,没有理由通过 json 编码使事情复杂化
  • “简单字符串”是什么意思?它可以包含换行符吗?引号?斜线?尝试使用不仅仅包含字母和数字的字符串。如果absolute_url() 返回 NULL 怎么办?简单的echo 会起作用吗? ;) 我同意absolute_url('login.php') 在这种特殊情况下可能 不会包含任何“有害”字符,尽管一般的“简单字符串”不能在没有任何转换的情况下直接回显。 json_encode() 不仅将数组转换为 javascript 表示法,它还可以安全地编码数字、字符串、NULL、数组/对象等 - 即使它们不是数组/对象的一部分。
  • 他试图获取他的网址,我认为他不会返回任何新行或疯狂字符...
  • bob -- 你为什么不把它放在一个变量中并调用外部javascript文件中的函数来传递它?我知道您可能希望将代码合并到一个文件中,因此在 php html 页面上声明变量,然后调用外部函数将其传入。
【解决方案2】:

这实际上不会像您在问题中指出的那样做任何事情,但请尝试:

$('elem').html('<h2>Please <a href="<?php echo absolute_url("login.php"); ?>">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)');

如果这是来自 PHP 页面,请尝试:

$('elem').html('<h2>Please <a href="&lt;?php echo absolute_url("login.php"); ?&gt;">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)');

显然,PHP 解释器永远不会看到这一点,并且 PHP 代码永远不会像您在问题中提到的那样被执行。

【讨论】:

    【解决方案3】:

    您不能在 js 文件中执行此操作,但您可以在 HTML 文件中的 &lt;script&gt; 标记中执行此操作。

    .html('<h2>Please <a href="<?php echo absolute_url(\"login.php\"); ?>">login</a> 
    or <a href="signup.php">register</a> to vote for this post.
    </h2>(click on this box to close)')
    

    【讨论】:

    • 这完全取决于你的 .js 文件是否也由 php 处理。默认情况下,这不会完成,但您可以配置您的服务器来执行此操作(例如,通过修改配置、使用 .htaccess 或将 .php 扩展名附加到您的 .js,例如“script.js.php”并包括此而不是一个普通的 .js 文件)。
    【解决方案4】:

    你检查过结果页的源代码吗?我只会在 php 标签之前和之后使用一个 "

    【讨论】:

      【解决方案5】:

      我认为从 Javascript 中使用 php 的正确方法是创建 Web 服务(在 php 中)并从您的 Javascript 中调用它们。 如果您想真正疯狂,您可以使用 Web 服务将 php 内容发送到服务器,将其编写为临时文件,然后“要求”该文件并运行它......这是一件相当不切实际的事情,除非有一个非常独特的用例,否则无法完成。 PHP,作为一种极其动态的语言,允许这种用法。

      【讨论】:

        【解决方案6】:

        你去 php 吗???我觉得这在 js 中是不可能的,

        最好的办法是使用 html,它非常有效且易于控制..

        .html('<h2>Please <a href="login.php">login</a> or <a href="signup.php">register</a> to vote for this post.</h2>(click on this box to close)')
        

        【讨论】:

          猜你喜欢
          • 2011-06-14
          • 1970-01-01
          • 2016-08-23
          • 2020-06-12
          • 1970-01-01
          • 2021-04-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多