Display a function using AJAX

时间:2017-07-26 作者:aido14

我正在尝试使用自定义插件使用AJAX显示函数。但似乎不起作用。

我的Javascript

(function($) {
$(document).on( \'click\', \'a.mylink\', function( event ) {
    $.ajax({
    url: testing.ajax_url,
        data : {
        action : \'diplay_user_table\'
    },
    success : function( response ) {
        jQuery(\'#user_reponse\').html( response );
    }


})
})
})(jQuery);
我的PHP

add_action( \'wp_enqueue_scripts\', \'ajax_test_enqueue_scripts\' );
function ajax_test_enqueue_scripts() {
    wp_enqueue_script( \'test\', plugins_url( \'/test.js\', __FILE__ ), array(\'jquery\'), \'1.0\', true );
    wp_localize_script( \'test\', \'testing\', array(
        \'ajax_url\' => admin_url( \'admin-ajax.php\' )
    ));
}

add_action(\'wp_ajax_my_action\', \'diplay_user_table\');

function diplay_user_table() {
    echo "function is loading in div";
}
当我单击链接时,它只显示“0”。有什么想法吗?

3 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

您没有将函数正确挂接到wp\\u ajax。您需要更换my_action 在AJAX请求中使用您的操作名称。你的情况是display_user_table. 您还需要将其连接到wp_ajax_nopriv 因此,它适用于已注销的用户。这是你对这些变化的看法:

add_action(\'wp_ajax_diplay_user_table\', \'diplay_user_table\');
add_action(\'wp_ajax_nopriv_diplay_user_table\', \'diplay_user_table\');
function diplay_user_table() {
    echo "function is loading in div";
    wp_die();
}

SO网友:Johansson

您可以使用一种越来越快的方法来摆脱恼人的0,它一直在跟踪每个AJAX请求。通过使用REST API端点,您不需要为登录用户和未登录用户编写不同的操作。

下面是一个快速示例:

add_action( \'rest_api_init\', function () {
    register_rest_route( \'aido14\', \'/my_path/\', array(
            \'methods\' => \'GET\', 
            \'callback\' => \'diplay_user_table\' 
    ) );
});
// Callback function
function diplay_user_table() {
    $data[\'test1\'] = "function is loading in div";
}
add_action( \'wp_enqueue_scripts\', \'ajax_test_enqueue_scripts\' );
function ajax_test_enqueue_scripts() {
    wp_enqueue_script( \'test\', plugins_url( \'/test.js\', __FILE__ ), array(\'jquery\'), \'1.0\', true );
    wp_localize_script( \'test\', \'testing\', array(
        \'ajax_url\' => site_url()
    ));
}
和您的JavaScript:

(function($) {
    $(document).on( \'click\', \'a.mylink\', function( event ) {
        $.ajax({
            url: testing.ajax_url + \'/wp-json/aido14/my_path\',
            data : { parameter-here : value-here 
        },
        success : function( response.test1 ) {
            jQuery(\'#user_reponse\').html( response );
        }
    });
})
})(jQuery);
现在,通过访问/wp-json/aido14/my_path. 一个简洁的JSON响应,您甚至可以在移动应用程序中使用。

而且,正如您所看到的,您可以通过将响应存储在一个数组中,在一个请求中传递多个响应。这将很方便,例如在联系人和登录表单中。

SO网友:user179352

尝试运行此代码

add_action(\'wp_ajax_diplay_user_table\', \'diplay_user_table\');
add_action(\'wp_ajax_nopriv_diplay_user_table\', \'diplay_user_table\');
function diplay_user_table() {
    ob_start();
    echo "function is loading in div";
    $data = ob_get_clean();
    echo $data;
    die();

}

结束

相关推荐

AJAX请求状态200,但没有实际的“响应”

因此,基本上,我编写了一个AJAX调用,它运行一个PHP脚本,响应一个按钮点击(由JS处理)来响应hello world。我得到状态200,在浏览器“inspect element”功能的响应部分,我得到“Hello world”,但它不会显示在页面上。我知道“echo”应该有用,因为我用它来表示我的站点已正确连接到MySQL数据库。因此,响应部分显示“Connected SuccessfullyHello World”(sic),但页面仅显示“Connected Successfully”。所以出于某种