按钮单击调用jquery函数和acess php

时间:2015-07-27 15:39:52

标签: javascript php jquery wordpress

我是Wordpress和Woocommerce的新手。我对Wordpress中的jquery几乎没有疑问。说我有一个功能

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

和一个按钮:

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

错误日志在页面加载时打印,但在点击时不打印。但我想只在用户点击按钮时才在php块中执行代码。有没有办法实现这一目标?在此先感谢!

2 个答案:

答案 0 :(得分:3)

jPO已经解释了如何以一种好的方式解决这个问题,但我想我应该解释为什么会这样。

PHP在服务器上执行。页面一旦发送到客户端,PHP就不再存在了。 JavaScript发生在客户端上,只要用户正在查看网页就可以执行。由于他们没有在同一时期生活,他们彼此不了解,不能以这种方式混合。

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

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

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

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

答案 1 :(得分: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"
    }
  });
}

希望有所帮助