在WordPress中执行AJAX请求

时间:2019-02-02 作者:Tekraj Shrestha

我正在尝试在插件中执行ajax请求。我所做的是:

    Class Someclass {

        public function __construct(){

        }

        public function current_page_function(){

            add_action(
                "wp_ajax_test_ajax",array($this,\'test_ajax\')
            );

            $this->data=array();

            View_Includer::load(\'index\',$this->data,false,false,false,false,true,false,false);
        }

         public function test_ajax(){
            wp_send_json_success(\'Science achieved!\');
            exit();
        }
}

脚本:

    var send_ajax_request = function( cpt_id ) {

        // Define the function and the data to send to the server.
        var data = {
            \'action\':    \'test_ajax\',
            \'post_type\': cpt_id
        };

        // Send the request to the server and handle the response.
        jQuery.post( Essestials.ajaxurl, data, function( response ) {
            return response;
            // Handle your response here.
        });

    };
当我这样做时,wordpress返回400个错误代码。但当我做以下事情时:

    Class Someclass {

        public function __construct(){
            add_action(
                "wp_ajax_test_ajax",array($this,\'test_ajax\')
            );
        }

        public function current_page_function(){
            $this->data=array();
            View_Includer::load(\'index\',$this->data,false,false,false,false,true,false,false);
        }

         public function test_ajax(){
            wp_send_json_success(\'Science achieved!\');
            exit();
        }
    }
它返回以下响应:

    {success: true, data: "Science achieved!"}
我在第一个过程中做错了什么?为什么只有在构造函数中添加钩子时它才起作用?我们非常感谢您的任何帮助。谢谢

1 个回复
SO网友:hamdirizal

必须尽早注册某些操作。当你把它放在"current_page_function" 方法(取决于您的程序)可能太晚了。

因此wp_ajax_* 钩子找不到您的操作,它返回错误。

相关推荐

在管理中单击添加到菜单时出现admin-ajax.php 500错误

在WordPress(V4.9.9)的管理面板中,当我单击“添加菜单项”时,永无止尽的纺车启动,我得到了管理ajax。控制台中出现php 500错误。错误如下发布https://somedomain.com/wp-admin/admin-ajax.php 500我尝试增加define(\'WP\\u MAX\\u MEMORY\\u LIMIT\',\'512M\');在web配置中。phpmax\\u input\\u vars=6000;在php中。但它并没有解决这个问题。在这个问题上没有错误。记录并