Jquery 使用AJAX获取post数据

Jquery 使用AJAX获取post数据,jquery,ajax,wordpress,Jquery,Ajax,Wordpress,我试图从Wordpress发布的AJAX中提取内容 我已将我迄今为止的努力包括在下面 加载的脚本 wp_enqueue_script( 'my-ajax-request', get_stylesheet_directory_uri() . '/js/ajax.js', array( 'jquery' ) ); wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax

我试图从Wordpress发布的AJAX中提取内容

我已将我迄今为止的努力包括在下面

加载的脚本

wp_enqueue_script( 'my-ajax-request', get_stylesheet_directory_uri() . '/js/ajax.js', array( 'jquery' ) );
wp_localize_script( 'my-ajax-request', 'MyAjax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
JavaScript

jQuery(document).ready(function($) {

  $('.ajax a').click(function(event) {
    event.preventDefault();
    var id = $(this).data('id');

    $.ajax({
      type: 'POST',
      url: MyAjax.ajaxurl,
      data: {'action' : 'ajax_request', 'id': id},
      dataType: 'json',
      success: function(data) {
        console.log(data);
      }
    });     

    return false;

  });

});
在这里,我开始了我的行动。如何将post数据编码为JSON并返回

使用函数和返回Ajax请求结果

它们都使用JSON,负责头、JSON编码和回显,并将其终止

此外,本地化脚本时还应发送nonce:

array(
    'url'   => admin_url( 'admin-ajax.php' ),
    'nonce' => wp_create_nonce( "my_long_unique_string_name" ),
)
并在
wp\u ajax.*
操作回调中检查它:

check_ajax_referer( 'my_long_unique_string_name', 'nonce' );

示例:

更新:

我在这篇文章上看到了一些活动,而且非常古老

请改用WP REST API:


我可以通过设置全局$post变量来解决这个问题

然后对$response进行编码

add_action('wp_ajax_nopriv_ajax_request', 'ajax_handle_request');
add_action('wp_ajax_ajax_request', 'ajax_handle_request');

function ajax_handle_request(){

    $postID = $_POST['id'];
    if (isset($_POST['id'])){
        $post_id = $_POST['id'];
    }else{
        $post_id = "";
    }

    global $post;
    $post = get_post($postID);

    $response = array( 
        'sucess' => true, 
        'post' => $post,
        'id' => $postID , 
    );

    // generate the response
    print json_encode($response);

    // IMPORTANT: don't forget to "exit"
    exit;
}
使用jQuery检索数据和输出

jQuery(document).ready(function($) {

  $('.ajax a').click(function(event) {
    event.preventDefault();
    var id = $(this).data('id');

    $.ajax({
      type: 'POST',
      url: MyAjax.ajaxurl,
      data: {'action' : 'ajax_request', 'id': id},
      dataType: 'json',
      success: function(data) {
        console.log(data['post']);
      }
    });     

    return false;
  });
});

你想什么时候从帖子中获取信息,发布时或发布后?还有,你想获取什么信息?仅供参考,这里也有一个问题,尽管像这样的问题在这里也很受欢迎。另外,如果你的目标是学习AJAX和JSON,那么这个WordPress示例可能不是最好的起点,因为WordPress并没有针对这类事情的API(我不认为),当然,这不是一个标准的返回JSON结果的方法。我广泛使用AJAX,但老实说,我一直在努力用WordPress做你想做的事情。@director我想在锚点击时获取帖子信息。我已经为包含帖子id的锚添加了一个数据属性。我想包含get_post($post_id)变量,该变量包含关于post的所有信息。如果上面给出了我的答案,我将如何调用这些函数?我的解决方案是否表明对ajax_请求操作的任何调用在技术上都是成功的呢?@hyperdrive,如果未设置post ID,我将返回一个错误。请参见我链接的示例。。。
jQuery(document).ready(function($) {

  $('.ajax a').click(function(event) {
    event.preventDefault();
    var id = $(this).data('id');

    $.ajax({
      type: 'POST',
      url: MyAjax.ajaxurl,
      data: {'action' : 'ajax_request', 'id': id},
      dataType: 'json',
      success: function(data) {
        console.log(data['post']);
      }
    });     

    return false;
  });
});