jQuery-使用Ajax的产品比较复选框

时间:2019-04-11 16:30:34

标签: php jquery ajax

我尝试进行产品比较

  • 1 /客户选择一个或多个比较复选框
  • 2 /显示一个复选框时,消息会显示在底部
  • 3 /复选框的值存储在会话下

我的问题是ajax,似乎没有在会话中插入复选框值。

谢谢。

我从那开始

<div><input type="checkbox" value="1" id="P1" /> P1</div>
<div><input type="checkbox" value="2" id="P2" /> P2</div>
<div><input type="checkbox" value="3" id="P3" /> P3</div>

<div id="container" style="display:none;"> 
    <div class="col-md-12 alert alert-info text-md-center">
        <a href="products_compare">Compare</div>
    </div>
</div>

脚本

<script>
   $(function() {
$('input[type=checkbox]').change(function(){   
    var chkArray = [];   
    $('#container').html('');

    //put the selected checkboxes values in chkArray[]
    $('input[type=checkbox]:checked').each(function() {
        chkArray.push($(this).val());
    });


    //If chkArray is not empty show the <div> and create the list
    if(chkArray.length !== 0){
        $('#container').show();           
        $.each(chkArray, function(i, val) { 
            $('<p>').text(chkArray[i]).appendTo('#container');

             $.ajax({
                method: 'POST',
                url : "http://localhost/shop/ext/ajax/products_compare/compare.php",
                data : {product_id:chkArray[i]},
                success : function(resp){
                    alert("Product is added to be compared");
                }
            });               
        });
    }else{
        $('#container').hide();   
        $('#container').html('');
    }
});

})     

ajax文件

$product_id = $_POST['product_id'];

if(!is_array($_SESSION['ids'])) {
  $_SESSION['ids'] = [];
} else {
  array_push($_SESSION['ids'], $product_id);
}

1 个答案:

答案 0 :(得分:0)

在使用session_start();变量之前,您需要添加$_SESSION。您应该检查是否通过使用$_SESSION['ids']设置了isset()

session_start();
$product_id = $_POST['product_id'];
$_SESSION['ids'] = $product_id;

现在应该可以使用,请检查一下。

尽管如此,我将重组您的JavaScript代码,以减少发送的请求数量。目前,您正在为每个选中的复选框发送单独的请求,而不仅仅是发送一个数组(只需删除$.each循环)即可。

if(chkArray.length !== 0){      
    $.ajax({
            method: 'POST',
            url : "http://localhost/test/test2.php",
            data : {product_id: chkArray},
            success : function(resp){
                alert("Product is added to be compared");
            }
        });  
}

请记住,您现在每次执行POST时都会向该数组中添加一个数组。

Array
(
    [0] => Array
        (
            [0] => 1
        )

    [1] => Array
        (
            [0] => 1
            [1] => 3
        )

)