做一个简单的ajax提交,将选取的复选框值通过ajax传到具体的PHP文件,但是为啥返回的数组为空(标红的部分) <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script>
<script type="text/javascript">
$(function(){
var items=$("#inputs").children("[type=checkbox]");
/*全选,全不选*/
$("#all").on('click',function(){
if($("#all").is(":checked")){
items.each(function(index, value){
$(this).attr("checked",true);
});
}else{
items.each(function(index, value){
$(this).attr("checked",false);
});
}
});
});
/*获取check数值方法*/
function delAtr(){
/*获取选中元素数值*/
var arr=[];
$("input[name='items']:checked").each(function(index,value){
// 将值加到数组
arr.push(this.value);
});
/*数组序列化*/
var jsonData=JSON.stringify(arr);
$.ajax({
url: 'Formajax.php',
type: 'POST',
dataType: 'text',
data:jsonData,
})
.done(function(sdata) {
console.log(sdata);
})
}
</script>
</head>
<body>
<div id="select2">
<input type="checkbox" id="all">选择
</div>
<div id="inputs">
<input type="checkbox" name="items" value="1" />1#
<input type="checkbox" name="items" value="2" />2#
<input type="checkbox" name="items" value="3" />3#
<input type="checkbox" name="items" value="4" />4#
<input type="checkbox" name="items" value="5" />5#
<input type="checkbox" name="items" value="6" />6#
<input type="checkbox" name="items" value="7" />7#
<input type="checkbox" name="items" value="8" />8#
<input type="checkbox" name="items" value="9" />9#
<input type="checkbox" name="items" value="10" />10#
</div>
<a href="javascript:void(0);" onclick="delAtr();">删除</a>Formajax.php文件print_r($_POST);哪块有问题了,为啥返回的是arr( )。我alert(jsonData);值是正常的

解决方案 »

  1.   

    如果返回的是数组,{a,b,c};
    你要读取a : sdata[0];
    如果返回的是,{a:1,b:2,c:3};
    读取1 : sdata['a']
      

  2.   

    我觉得这样子传上去值并不在$_POST里面, 你可以通过  file_get_contents("php::/input");取
    要么你把传值方式改一下jsonData = {delKey:arr}PS:全选那里建议用prop,不用attr
      

  3.   

    你获取的jsonData 只是单纯的字符串,你在ajax传输的时候需要对这个字符串做个命名,这样在formajax.php页面中才能接到对应的值
    你可以试试在data传值的时候加上名称
    data:'id='+jsonData