如何使用AJAX将Post_ID变量从主题的Single.php传递到自定义插件

时间:2018-01-15 作者:DonChi

经过多次搜索,我似乎发现get\\u this\\u ID();它的其他迭代也不会在AJAX请求中工作。我是一个公认的PHP noob,谁能解释一下this guy here 完成了吗?他说,他“只是简单地将id回显到一个隐藏的div中,然后通过AJAX调用将其传递回去。”

我的代码如下。

if(wp_verify_nonce($nonce, \'checkbox\') !== false) {

     global $post; 
     $post = $wp_query->get_queried_object();
     $post_ID = $post->ID; 

      $user_ID = get_current_user_id();

       $dataArray[$post_ID] = isset($dataArray[\'second_checkbox\']) ? true : false;

      if($user_ID != NULL) {
        foreach($dataArray as $key=>$value) {

          $status = update_user_meta($user_ID, $key, $value);

        }

        //ajaxStatus(\'success\', \'Meta fields updated.\', $post_ID);
        ajaxStatus(\'success\', \'Meta fields updated.\', $dataArray);
它在控制台中为$post\\u ID生成一个空值。

{"status":"success","message":"Meta fields updated.","data":{"":false}}
但在单曲中。php页面,找到$post\\u ID,echo工作

<?php 
global $wp_query; 
$post = $wp_query->get_queried_object();
$post_ID = $post->ID; 
?>                              <div id="test"><?php echo($post_ID); ?></div>
Javascript就在这里

jQuery(document).ready(function($) {
    var response;
    $(\'#checkbox\').on(\'submit\',function(e) {

    e.preventDefault();

    $.post( checkbox.ajaxurl, {
          action : \'submit_checkboxes\',
          nonce : checkbox.nonce,
          post : $(this).serialize()
      },
      function(response) {
          console.log(response);
          responseSuccess(response);
      });

    return false;
    });
    function responseSuccess(data) {

    response = JSON.parse(data);

    if(response.status === \'success\') {
      $(\'#checkbox-message\').text(response.message);
    } else {
      $(\'#checkbox-message\').text(response.message);
    }
    }   });
这是ajax

function ajaxStatus($status, $message, $data = NULL) {

  $response = array (
    \'status\' => $status,
    \'message\' => $message,
    \'data\' => $data
    //\'data\' => $post_ID
    );
  $output = json_encode($response);

  exit($output);

}

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

我可能在你的代码中遗漏了什么;但是:

您需要“移动”您的test div转换为JS变量,然后可以在Ajax中使用该变量(或者直接在$.post中使用div值)。

e、 g。var postID = $(\'#test\').val();

然后使用它将所需信息传递给服务器

$.post( checkbox.ajaxurl, {
   action : \'submit_checkboxes\',
   nonce : checkbox.nonce,
   thispost : postID,
   post : $(this).serialize()
  },
  function(response) {whatever... }
);
在PHP中使用sayintval($_POST[\'thispost\']) 获取职位id并相应使用。

注意:未测试(&O);我倾向于使用jQuery.ajax 使用值的数据字符串,而不是jQuery.post

结束

相关推荐

Admin-Ajax Error

我在本地主机上制作主页。我需要wp_query 使用Ajax。但有一些错误。我不知道为什么。你能帮帮我吗?---->这是load_more_ajax.jsvar page = 2; var date_pass = \"<?php echo($date_filter);?>\"; var compare_pass = \"<?php echo($compare);?>\"; var ajaxurl = \"<?php echo admin_url(