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

时间:2017-12-17 10:39:38

标签: php jquery ajax wordpress

我目前正在为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作为int传递给一些HTML <a>标签,我将其作为rel =&#34;&#34;链接。

然后在我的点击功能中,我将rel并将其放入变量&gt; clickedID,然后发送AJAX请求,我将变量&gt; clickedID传递给data属性。 在我的成功函数中,我在console.log中响应了<a>,这给了我正确的ID(来自我<a>的相对内容) as seen here

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

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

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

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

&#13;
&#13;
  <?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>
&#13;
&#13;
&#13;

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