只需在插件上运行php函数的一个javascript函数

时间:2017-04-10 作者:codemonkey

当用户执行某个操作时,我想从插件运行一个php函数。我检查了这个链接,但我还是很困惑。https://codex.wordpress.org/AJAX_in_Plugins

下面是我编写的相关JS代码。

$(function() {
      var data = {
        \'nothing\': \'nothing\'
        \'whatever\': ajax_object.we_walue
      }
      document.getElementById("getPhp").onclick = function() {myFunction()};
      function myFunction() {
      jQuery.post(ajax_object.ajax_url, data, function(response) {
      alert(\'It works\');
});
});
实际上,我真的不需要传递任何东西,我只是为了填充jquery而编写了这个变量。post函数的“data”参数。然后在php文件中:

function phpback_js(){
wp_enqueue_script( \'getPhp\', plugins_url( \'/mycode.js\', __FILE__ ),array(\'jquery\'));
}
 add_action(\'the_post\', \'phpback_js\');

add_action(\'wp_ajax_my_action\', \'back_php\');
function back_php()
{
    //I want this function to be called.   
}
但它不工作,警报框永远不会弹出。问题出在哪里?或者,有没有一种方法可以在不发送任何数据的情况下调用php函数?

1 个回复
SO网友:scott

在JS代码中,需要action 所以它知道要执行什么函数。

var data = {
    \'action\': \'my_action\',
    \'nothing\': \'nothing\'
    \'whatever\': ajax_object.we_walue
  }
您应该看到动作如何与中使用的挂钩对应add_action. 但我还要补充第二个动作:

add_action(\'wp_ajax_my_action\', \'back_php\');
add_action(\'wp_ajax_no_priv_my_action\', \'back_php\');
这将确保所有用户都能够触发AJAX,而不仅仅是那些登录的用户。

如果不需要PHP函数来使用任何数据,只需传递一个空字符串即可。但为了确保它正常工作,我会让PHP函数返回以下内容:

function back_php()
{
    echo "text from PHP";
    wp_die();
}
。。。然后在AJAX中捕捉它success 功能:

jQuery.post(ajaxurl, data, function(response) {
  alert(response);
}
希望这有帮助。

相关推荐

自定义模板earch.php中的搜索结果

现在我在搜索结果页面(search.php)中遇到了一个问题,结果是由索引页面模板显示的,而不是它的模板,它显示所有帖子,不管搜索者是否输入了内容我的索引。php页面<?php get_header(); ?> <?php $search = $_get[\'search\']; $args = array( \'post_title_like\' => $search ); $res = new wp_query($args