duanshan7261
2018-01-17 19:38
浏览 44
已采纳

在Wordpress中:使用AJAX发布jQuery变量,以便以后在PHP中使用

In WordPress, I'm trying to post a jQuery variable using AJAX to use later in PHP. I've setup my jQuery function and the function to echo the variable.

I am getting the success message from the jQuery function in the console log, but the $_POST variable is null.

Below are the functions I've setup:

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');

图片转代码服务由CSDN问答提供 功能建议

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

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

以下是函数I 设置:

  function foo_carousel_js(){?&gt; 
&lt; script&gt; 
 jQuery(document).ready(function($){
 var ajax_url  =“&lt;?php echo admin_url('admin-ajax.php');?&gt;”; 
 var count_ci = $('。selector li')。length; 
 
 $ .ajax({
 类型:'POST',
 url:ajax_url,
 data:{
 action:'foo_item_count',
 count_ci:count_ci 
},
 success:function(data){
 console.log(data  ); 
} 
}); 
}); 
&lt; / script&gt; 
&lt;?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'); 
   
 
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • dongsuiying7773 2018-01-17 21:18
    已采纳

    I had the exact same question/problem a few years ago. Turns out you cannot access that Ajax sent value anywhere else within WP besides your functions.php and of course plugin files. Reason being that while doing Ajax, WP only reloads the mentioned files (functions and plugins) but not the rest of the template structure. Therefore, while $_POST has your data, you can't render it on a template file because those are already loaded.

    Edit:

    Even within the plugin files, you only have access to your $_POST values within an Ajax handler function.

    I recommend rethinking your goal, maybe Ajax isn't the way to go.

    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题