Wordpress admin-ajax.php正在死"0"而没有处理功能

She*_*ixt 3 javascript php ajax wordpress jquery

我正在尝试学习如何以正确的方式处理Wordpress中的AJAX请求.为此,我正在调整本教程,以创建一个超级简单的AJAX请求,将帖子的ID(从链接)放入我的页面内容.

逻辑

  1. #our-work a链接被点击[JS]
  2. 获取帖子ID(来自data-id属性)并将其存储为postID变量[js]
  3. postID通过AJAX 传递(使用WP的admin-ajax.php文件)[js]
  4. example_ajax_request函数将获取ID并简单地回显它[php]
  5. 如果成功,请将服务器响应附加到#herodiv.

我意识到这没有任何好处,但一旦我有了工作,我将修改功能以达到真正的目的.

我的守则

这是我在plugins文件夹中创建的函数的副本:

wp_enqueue_script( 'my-ajax-request', plugin_dir_url( __FILE__ ) . 'acl-plugin.js', array( 'jquery' ) );

wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );

function example_ajax_request() {
    if ( isset($_REQUEST) ) {
        $postID = $_REQUEST['postID'];
        echo $postID;
    }
    die();
}
add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );
Run Code Online (Sandbox Code Playgroud)

这是JS文件的副本

jQuery(document).ready(function($) {
    $('#our-work a').click( function() {
        var postID = $(this).attr("data-id");

        $.ajax({
            url: MyAjax.ajaxurl,
            data: {
                'action':'example_ajax_request',
                'postID' : postID
            },
            success:function(data) {
                $('#hero').append( "Well this seems to work" + data );
            },
            error: function(errorThrown){
                console.log("This has thrown an error:" + errorThrown);
            }
        });
        return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

问题

单击链接后,JS会触发,但会产生以下响应:

<div id="hero">
    Well this seems to work 0
</div>
Run Code Online (Sandbox Code Playgroud)

使用警报我知道在AJAX请求之前正在拾取ID.所以问题在于我的功能.为了了解更多信息,我(暂时)调整了WP的admin-ajax.php文件,这样我就可以找出哪个die();产生了"0"的响应.

这是文件中的最后一个,我认为不会触发,因为我die();在自己的函数中有一个命令.有人可以指出我哪里出错了吗?

She*_*ixt 6

这是我可以自豪地说的极少数时间之一......这里没有任何问题!

服务器返回的原因0是因为我已登录!该wp_ajax_nopriv_example_ajax_request只对谁是用户没有登录.退出后能正常工作.

所以如果你想做同样的事情,只要确保你在函数下面有两个动作:

add_action( 'wp_ajax_example_ajax_request', 'example_ajax_request' );
add_action( 'wp_ajax_nopriv_example_ajax_request', 'example_ajax_request' );
Run Code Online (Sandbox Code Playgroud)