ajax 传值 为空的问题

漫步的猪 2017-12-06 04:42:42
做一个简单的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);值是正常的
...全文
397 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
木乄木 2017-12-07
  • 打赏
  • 举报
回复
引用 楼主 manbudezhu 的回复:
做一个简单的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);值是正常的
你获取的jsonData 只是单纯的字符串,你在ajax传输的时候需要对这个字符串做个命名,这样在formajax.php页面中才能接到对应的值 你可以试试在data传值的时候加上名称
data:'id='+jsonData
冰糖-雪梨 2017-12-07
  • 打赏
  • 举报
回复
我觉得这样子传上去值并不在$_POST里面, 你可以通过 file_get_contents("php::/input");取 要么你把传值方式改一下 jsonData = {delKey:arr} PS:全选那里建议用prop,不用attr
PF披风 2017-12-07
  • 打赏
  • 举报
回复
如果返回的是数组,{a,b,c}; 你要读取a : sdata[0]; 如果返回的是,{a:1,b:2,c:3}; 读取1 : sdata['a']

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧