如何从纯前端AJAX获取帖子(只使用帖子ID)?

时间:2017-06-09 作者:blaasvaer

我需要在模式叠加中显示帖子的各种内容。

如何使用经典的jQuery方法从前端(直接从.js文件)通过AJAX调用Wordpress?

$.ajax({
    \'url\' : ?
    data : {
        \'id\' : 247 <-- post ID
    }
    ...
});
这不是PHP文件,因此没有:

admin_url(\'admin-ajax.php?action=my_action&post_id=\'.$post->ID.\'&nonce=\'.$nonce);

2 个回复
最合适的回答,由SO网友:Johansson 整理而成

您可以通过以下方式输出javascriptwp_add_inline_script(). 这样,您可以在输出代码之前设置帖子的id和AJAX URL:

wp_add_inline_script(\'my-js\', \'
    jQuery.ajax({
        \\\'url\\\' : \'.admin_url(\'admin-ajax.php?action=my_action\').\'
        data : {
            \\\'id\\\' : \'.get_the_ID().\'
        }
    });\');
请注意,您需要挂接到现有的js文件才能添加内联脚本,所以my-js 必须是有效的排队脚本。

SO网友:blaasvaer

将此添加到函数中。php文件:

function my_action() {
    $the_post_id = $_POST[\'id\'];

    $output = json_encode( get_post( $the_post_id ) );
    header(\'Content-Type: application/json\');
    echo $output;
    wp_die();
}
add_action(\'wp_ajax_my_action\',        \'my_action\');
add_action(\'wp_ajax_nopriv_my_action\', \'my_action\');
将脚本排队:

function add_scripts() {
    wp_enqueue_script( \'app\', get_template_directory_uri() . \'/assets/js/build.min.js\', array(), \'1.0.0\', true );

    wp_localize_script( \'app\', \'my_ajax_object\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );
}
add_action( \'wp_enqueue_scripts\', \'add_scripts\' );
js文件中的AJAX调用:

$.ajax({
    url : my_ajax_object.ajaxurl,
    type: \'POST\',
    data : {
        \'action\' : \'my_action\',
        \'id\' : 214 // And whatever else you need to pass on ...
    }
}).done(function ( response ) {

}).fail(function ( err ) {

});

结束

相关推荐

AJAX调用未激活回调函数

我已经为此挣扎了几天了,所以欢迎提供任何帮助。这不是我第一次用WP设置Ajax,所以我至少有一些想法。它涉及一个非常标准的表单验证和向数据库输入信息。This all inside of a plugin. 那么,工作原理是:表单提交工作,jquery脚本被激活,并将输入信息转发到回调PHP文件。问题是,由于某种原因,处理该PHP文件上表单的特定函数没有被激活。那么,我有什么?我会跳过这个表格,因为它看起来很标准。1-javascript/jquery/插件/警报小部件/提交处理程序。js公司jQuer