使用AJAX将JS变量发送到PHP(并使用它)

问题描述 投票:0回答:2

我目前正在为wordpress创建一个插件,这是一个发送js变量作为数据的ajax。然后我希望能够在我的PHP插件模板文件中使用数据中的变量。

所以这里有一个更详细的说明。我有这个名为showgroups.php的文件

            <?php
            foreach ($attributes as $term) :?>
                <a class="testclick" href="#" rel="<?php echo $term->term_taxonomy_id?>"><?php echo $term->name;?></a>
                <?php
            endforeach;
            ?>

            <script type="text/javascript">
            var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
            var clickedID = "";
            $('.testclick').click(function(){
                clickedID = $(this).attr('rel');
                console.log(clickedID);
                    $.ajax({
                        type: "GET",
                        url: ajaxurl,
                        data: ({clickedID: clickedID}),
                        success: function(response) {
                        console.log(response);
                        }
                    });
                });
            </script>

所以在我的PHP中,我将一个ID作为一个ID传递给一些HTML <a>标签,并将其作为链接的rel =“”。

然后在我的click函数中,我把rel放入变量 - > clickedID,然后发送AJAX请求,我将variable-> clickedID传递给data属性。在我的成功函数我console.log响应<a>,这给了我正确的ID(来自我的<a>的相关)as seen here

现在我尝试将此数据/ AJAX调用传递给我的下一个PHP文件:

            <?php
            $lol = $_GET['clickedID'];
            echo '123' . $lol;

但是$ lol变量是NULL。有没有人有任何想法,为什么我似乎无法访问,来自AJAX调用的数据

php jquery ajax wordpress
2个回答
0
投票

我已将rel更改为data-rel HTML5数据属性(Reference

更新后的代码如下:

 <?php foreach ($attributes as $term): ?>
      <a class="testclick" href="#" data-rel="<?php echo $term->term_taxonomy_id?>"><?php echo $term->name;?></a>
 <?php endforeach; ?>

        <script type="text/javascript">
            var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
            var clickedID = "";
            $('.testclick').click(function(){
                clickedID = $(this).data('rel'); // change over here
                console.log(clickedID);
                var dataString = {clickedID: clickedID}; //change over here
                    $.ajax({
                        type: "POST", // change over here
                        url: ajaxurl,
                        data: dataString , // change over here
                        success: function(response) {
                        console.log(response);
                        }
                    });
                });
        </script>

0
投票

  <?php
            foreach ($attributes as $term) :?>
                <a class="testclick" href="#" rel="<?php echo $term->term_taxonomy_id?>"><?php echo $term->name;?></a>
                <?php
            endforeach;
            ?>

            <script type="text/javascript">
            var ajaxurl = "<?php echo admin_url('admin-ajax.php'); ?>";
            var clickedID = "";
            $('.testclick').click(function(){
             var clickedID = $(this).attr('rel');
                console.log(clickedID);
                    $.ajax({
                        type: "GET",
                        url: ajaxurl,
                        data: ({clickedID: clickedID}),
                        success: function(response) {
                        console.log(response);
                        }
                    });
                });
            </script>

如果要传递get ajax请求,则应该像变量一样定义。

© www.soinside.com 2019 - 2024. All rights reserved.