Ajax simple experiment

时间:2013-12-03 作者:ashraf

我想输出帖子id。但我收到的是null。。。

在里面footer.php

<script>
jQuery("a.more-link").live(\'click\', function(event) {
    event.preventDefault();
    jQuery.ajax({
        url: \'<?php echo admin_url(\'admin-ajax.php\'); ?>\',
        type: \'POST\',
        data: {
            \'action\' : \'do_ajax\',
            \'post_id\' : \'<? echo $_REQUEST[\'post_id\'];?>\'
        },
        dataType: "json",
        success: function(myResult) {
            alert(myResult);
        },
        error: function(error) {
            alert(error);
        }
    });
});
</script>
并且在functions.php

add_action(\'wp_ajax_nopriv_do_ajax\', \'retrieve_id\');
add_action(\'wp_ajax_do_ajax\', \'retrieve_id\');

function retrieve_id(){      
    global $post;
    $myPost= $post->ID;
    $output =  $myPost;
    $output = json_encode($output);
    if (is_array($output)) {
        print_r($output);
    } else {
        echo $output;
    }
    die;
};
为什么它显示为空?

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

$post 没有在AJAX处理程序中设置,它不存在。AJAX请求是一个单独的请求,与呈现请求所在页面的请求不同,php数据不会在这两个请求之间持久存在。你通过了post_id 在您的AJAX请求中,我假设您需要以下内容:

function retrieve_id(){
    echo $_POST[\'post_id\'];     
    die;
}

结束

相关推荐

AJAX Load上未显示社交共享工具包

我正在使用社交共享工具包(http://wordpress.org/plugins/social-sharing-toolkit/) 在我的网站上。这个插件可以很好地处理常见的帖子,但不能处理ajax加载的帖子。这有什么解决办法吗?。