我尝试进行产品比较
我的问题是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);
}
答案 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
)
)