使用jQuery从Session数组中删除一个项目

时间:2014-07-29 18:32:51

标签: php jquery ajax session-variables

我有2个文件:compare.php(进一步称为C)和compare-ajax.php(C-A)。
将项目ID添加到会话并将其显示在表格上的部分工作正常,
 但我不知道为什么它不会从Session数组中删除id(在anchor元素中提到)。

C

1            <?php $session_start(); ?>
2            ....(some php,html code)
3    <script>
4    $( "#options" ).change(function() {
5       $cid= $("#options").val();
6           $("#teste").html($cid);
7           });

8    $(document).ready(function(){
9      $("#submitSearch").click(function(){
10      event.preventDefault(); // f important
11       $.post("compare-ajax.php",
12        {  cid:$cid },
13        function(data){
14          alert ("test");
15          //var tds = $(originalTable).children('tr').children('td').length;
16              $("table tr").html("<td>"+data+"</td>");
17        });
18      });
19    });
20    </script>
...

C-A :(整个档案)

<?php
1           session_start();
2       require "config.php"; 

3           if (!isset($_SESSION['cid'])) {
4               $comp_id=array();
5               $_SESSION['cid']=array();
6               array_push($_SESSION['cid'],$_REQUEST['cid']);
7               $comp_id = $_SESSION['cid'];
8           }else {
9               $comp_id=$_SESSION['cid'];
10              if (isset($_REQUEST['cid'])){
11                  if (!is_numeric(array_search($_REQUEST['cid'],$_SESSION['cid']))){
12                      if (count($comp_id)<=3) {  // max number of items (ok)
13                          array_push($_SESSION['cid'],$_REQUEST['cid']);
14                          $comp_id = $_SESSION['cid'];
                        } 
                    }
                }
            }

15    if (isset($_REQUEST['remove'])){
16      alert ($rem);
17      $rem=array_search($_REQUEST['remove'],$_SESSION['cid']);
18      if ($rem>=0) {
19      echo "Erasing!";
20          array_splice($_SESSION['cid'], $rem, 1);
21          $comp_id=$_SESSION['cid'];
        }
    }

22      echo "No of elements: ".count($_SESSION['cid']);

23      foreach ($comp_id as $item){                                        
24          echo "<b>".$item."</b> || ";
25          $qu="SELECT DISTINCT * FROM car_tb WHERE c_id=".$item;
26          foreach ($dbo->query($qu) as $r) {
27              $t=1;
28                  echo '<a id="test" href="'.$r[0].'">(('.$r[0].'))</a> ';
29              while ($t<=69):   // max no. of elements for each item
30                  echo "((".$r[$t].")) ";
31                  $t=$t+1;
32              endwhile;
            }
        }

    ?>
33    <script>
34      $( "a" ).click(function( event ) {
35      event.preventDefault();
36      var r_id = $(this).attr("href");
37          $.post("compare-ajax.php",
38        {  remove: r_id },
39        function(data){
40          alert ("test "+r_id);
41          alert ("This "+r_id+ " should be removed!");
42              $("table tr").append("<td>"+data+"</td>");
        });
    });
43    </script>

需要:当我点击链接(在C-A的第28行创建)时, href 中的值我想要从会话中删除/删除。 我的问题在于:当我点击链接(参见C-A中的第28行)时,我应该删除相应的id,我会收到正确值的警报,但没有任何内容从会话中删除。我甚至没有得到警报(C-A第19行)。

1 个答案:

答案 0 :(得分:0)

我看到一些有问题的代码,但让我们从&#34; C&#34;文件。看来你正在分配&#34; cid&#34;变量似乎是一个php变量&#34; $ cid&#34;。除非你将$ cid更改为数字,否则这不会起作用。如果&#34; $ cid&#34;是一个字符串,然后改为将php包装在引号中。当然,确保$ cid分配了一些东西!从那里开始,让我知道你是如何做出来的。