【问题标题】:Button On click call jquery function and acess php按钮 Onclick 调用 jquery 函数并访问 php
【发布时间】:2015-07-27 15:39:52
【问题描述】:

我对 Wordpress 和 Woocommerce 非常陌生。我对 Wordpress 中的 jquery 几乎没有疑问。说我有一个功能

function test(){
      alert("test");
      <?php
      error_log("Test ---------------------------- ", 0);
      ?>
  }

还有一个按钮:

<input type="button" id="btnclick" onclick="test();" value="Test" />`

错误日志在页面加载时打印,但不是在点击时打印。但是我只想在用户单击按钮时在 php 块中执行代码。有没有办法实现这一点?提前谢谢`

【问题讨论】:

  • 继续阅读 ajax ... 允许客户端代码 (JS) 可以与服务器端代码 (PHP) 对话。

标签: javascript php jquery wordpress


【解决方案1】:

jPO 已经解释了如何很好地解决这个问题,但我认为我应该解释为什么会发生这种情况。

PHP 在服务器上执行。一旦页面被发送到客户端,PHP 就不再存在了。 JavaScript发生在客户端,只要用户在浏览网页就可以执行。由于他们不是生活在同一时间段内,因此他们彼此不了解,因此不能以那种方式混合。

当您在浏览器中访问页面时,浏览器会向服务器发送请求。在服务器上,PHP 解释器遍历请求页面的代码,执行&lt;??&gt; 之间的所有内容。它不明白它周围的其他东西是什么——它可能是 HTML、JS、纯文本、任何东西,PHP 解释器不知道也不关心。这就是它在页面加载时写入错误日志的原因。

当 PHP 解释器完成后,它会生成一个如下所示的文档:

function test(){
      alert("test");
  }

即发送到客户端,按下按钮时在客户端运行 JS(没有任何写入错误日志的指令)。

【讨论】:

    【解决方案2】:

    不可能这样。如果你想这样做。你需要类似 php 中的 ajax 方法,你可以调用它。假设您在项目的根目录中有一个名为 ajax.php 的文件,您可以在其中定义一个名为 test() 的函数,然后您必须有一个 $_REQUEST 翻译器,它调用您的函数 test(),所以 ajax。 php 看起来像这样

    <?php
      // checks if you sent a parameter named method and calls the method
      // if you provide parameter named params it will send them too
      if(isset($_REQUEST)){
        if(isset($_REQUEST["params"]))
          ajax($_REQUEST["method"],$_REQUEST["params"]);
        else
          ajax($_REQUEST["method"]);
      }
    
      function ajax($function,$data = null){
        $function($data);
      }
      function test(){
        error_log("Test ---------------------------- ",0);
      }
    

    你的 ajax 看起来像这样

    function test(){
      $.ajax({
        url:"ajax.php",
        data:{
          method:"test"
        }
      });
    }
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2014-12-22
      • 2015-05-14
      • 2010-10-19
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多