【问题标题】:In Wordpress: post jQuery variable using AJAX for later use in PHP在 Wordpress 中:使用 AJAX 发布 jQuery 变量以供以后在 PHP 中使用
【发布时间】:2018-01-17 19:38:42
【问题描述】:

在 WordPress 中,我正在尝试使用 AJAX 发布一个 jQuery 变量,以便稍后在 PHP 中使用。我已经设置了我的 jQuery 函数和回显变量的函数。

我在控制台日志中从 jQuery 函数获得成功消息,但 $_POST 变量为空。

以下是我设置的功能:

function foo_carousel_js() { ?>
     <script>
     jQuery(document).ready(function($) {
       var ajax_url = "<?php echo admin_url('admin-ajax.php'); ?>";
       var count_ci = $('.selector li').length;

       $.ajax({
          type: 'POST',   
          url: ajax_url,  
          data: {
            action : 'foo_item_count',
            count_ci : count_ci
          },
          success:function( data ) {
            console.log( data );
          }
       });
    });
   </script>
<?php }
add_action( 'wp_footer', 'foo_carousel_js' );

function foo_item_count() {

    $k = esc_html( $_POST['count_ci'] );
    echo $k;

    wp_die(); 
}
add_action('wp_ajax_foo_item_count', 'foo_item_count');
add_action('wp_ajax_nopriv_foo_item_count', 'foo_item_count');

【问题讨论】:

  • 您说console.log 在成功回调中正确显示了您的count_ci 值吗?
  • @TonyM:是的,确实如此。我无法弄清楚该值如何正确显示在控制台中,但不在 $_POST 变量中。
  • 我知道这可能是一个愚蠢的问题:但你怎么知道它不是? echo $k; 似乎正在工作 - 您是否尝试在 Ajax 处理程序函数之外访问 $_POST['count_ci'] )?即foo_item_count()
  • @TonyM:您的要求很有帮助——我正在尝试在其他地方(处理函数之外)访问/回显 $_POST 变量,但无法访问。跨度>
  • 发布了一个答案@chowwy,我不久前遇到了这个确切的问题

标签: php jquery ajax wordpress


【解决方案1】:

几年前我遇到了完全相同的问题/问题。事实证明,除了您的 functions.php 和插件文件之外,您无法在 WP 中的其他任何地方访问 Ajax 发送的值。原因是在 Ajax 时,WP 只重新加载提到的文件(函数和插件),而不是模板结构的其余部分。因此,虽然$_POST 拥有您的数据,但您无法在模板文件上呈现它,因为它们已经加载。

编辑

即使在插件文件中,您也只能在 Ajax 处理函数中访问您的 $_POST 值。

我建议您重新考虑您的目标,也许 Ajax 不是正确的选择。

【讨论】:

  • 我实际上想在插件模板中获取 $_POST 变量。所以你是说它应该在那里可用?
  • 我可能不清楚——技术上是的,但仍然在处理函数中。它在其他任何地方都不可用。我会更新我的答案以澄清这一点。
  • 好的,那么如何在处理函数中获取变量呢?我已经附和出来了。如果我运行 do_action('ajax_handler_function') 它仍然没有拉变量。
  • 我不确定您的最终目标或发送值的目的是什么,但您有它:$k。您可以对其进行操作,将其保存到数据库等,然后echo 它。例如,您可以运行查询传递 $k 作为 post_id 或其他东西的参数。无论您在做什么,都必须在foo_item_count() { } 内完成
  • 感谢您的帮助。我已接受并赞成您的回答。我最终在我的处理函数中将数据保存到数据库并以这种方式访问​​它。再次感谢!
猜你喜欢
  • 1970-01-01
  • 2011-09-05
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多