WordPress-后端AJAX调用返回0

时间:2019-06-07 10:21:23

标签: php ajax wordpress

我已经为我的网站创建了一个后端插件,我希望它可以与AJAX一起使用。但是我从AJAX响应中得到的全部是readyState:4和responseText:0。

script.js

jQuery(document).ready(function($){
    $.ajax({
        url: ajaxurl,
        type: "POST",
        data: { 
            action: 'my_action', 
            param: 'st1' 
        },
        error : function(response){
            console.log(response);
        },
        success : function(response){
            console.log(response);
        }
    }); 
});

members_loop.php

add_action('wp_ajax_my_action', 'my_ajax_action_function');
add_action('wp_ajax_nopriv_my_action', 'my_ajax_action_function');

function my_ajax_action_function(){
    $reponse = array();

    if(!empty($_POST['param'])){
         $response['response'] = "I've get the param a its value is ".$_POST['param'].' and the plugin url is '.plugins_url();
    } else {
         $response['response'] = "You didn't send the param";
    }

    header( "Content-Type: application/json" );
    echo json_encode($response);

    wp_die();
}

我正在插件内部使用三个文件来执行此操作,在我的plugin.php文件中声明了我的插件并排队了我的script.js文件。然后,我有一个模板文件,其中有两个文件夹,一个是members_loop.php,另一个是index.php(插件的“主页”)。然后,我的script.js文件中就有一个资产文件。不知道是否需要此信息,但我不认为我的ajax调用有误,所以我想知道出了什么问题。

问题更新

我只是将my_ajax_my_action功能和动作剪切并粘贴到我声明插件的plugin.php文件中,现在它可以工作了。那么,如何在外部文件中使用它呢?我是否需要在plugin.php文件中包含members_loop.php文件?

1 个答案:

答案 0 :(得分:1)

如果文件路径为“ /wp-content/plugins/your_plugin/members_loop.php”,则在文件“ plugin.php”内添加require_once plugin_dir_path( __FILE__ ) . 'members_loop.php';require_once dirname(__FILE__) . '/members_loop.php';