php - 使用wordpress处理ajax请求响应

标签 php javascript wordpress request

我在我的 wordpress 插件中完成了一个 ajax 请求。我的请求基于以下步骤:

1) 我正在包含 js 文件并在准备就绪时启动请求文档

2)在 php 端,我想接受这个请求并将其打印出来进行测试。

为了所有这些东西我写了这些代码:

主要.js:

 $(function(){      
    $.post('/wp-content/plugins/dsn/functions.php',{token:"1tibu4"},function(data) {
      console.log(data);
    },"json");
 });

函数.php:

 <?php 

   add_action('loop_end', 'init');

   function init(){
       global $_POST;

       $post= $_POST;   
       echo json_encode($post);Exit;

   }

我的问题是,当请求完成时,控制台屏幕的响应选项卡上没有任何内容。这是怎么发生的?

最佳答案

WordPress 有一种处理 AJAX 的独特方式。如果您直接向 php 文件发出请求,那么您将不会加载 WordPress 框架的其余部分,并且您将无法使用许多 WordPress 特定功能。

在 PHP 方面,您需要做的是使用如下所示的代码:

//for logged in users
add_action('wp_ajax_my_action', 'my_action_callback');
//for not logged in users
add_action('wp_ajax_nopriv_my_action', 'my_action_callback');

function my_action_callback() {
  //your function here
  exit; //always call exit at the end of a WordPress ajax function
}

在 JS 端,您需要将请求发送到名为“wp-admin/admin-ajax.php”的文件

所以你的请求看起来像这样(使用 jQuery):

$.ajax({
    url : '/wp-admin/admin-ajax.php',
    type : 'get', //or 'post'
    data : {
                action: 'my_action_callback'
            }
})
     .fail(function(r,status,jqXHR) {
         console.log('failed');
     });
     .done(function(r,status,jqXHR) {
        console.log('success');
     });

注意 my_action_callback 部分。

关于php - 使用wordpress处理ajax请求响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14521423/

相关文章:

javascript - IE 7 中没有列表的嵌套 CSS 计数器

php - 删除通过 Woocommerce 注入(inject) Head 部分的内联 CSS 规则 (woocommerce-inline-inline-css)

wordpress - 如何在WordPress管理页面添加订单列?

javascript - 编译时的javascript函数和var区别

javascript - 如何检测是否启用了 IndexedDB

javascript - 异或字符串 : JS vs PHP

php - 如何在 2 个实体之间使用 QueryBuilder 在 Symfony Doctrine 中没有关系表的情况下加入

php - 如何在 Wordpress 主题中将永久链接添加到 WP_Query

javascript - 如何使用 php 和 ajax 创建对象数组

javascript - 如何在单击按钮时多次播放声音?