Ajax传递二维数组到ThinkPHP控制器

这篇博客介绍了如何在录入专家信息时,利用jQuery动态生成Checkbox,并通过Ajax将包含专家擅长领域的二维数组传递给ThinkPHP后台控制器。在提交前,对文本框和多选框进行了合法性检查。
摘要由CSDN通过智能技术生成

介绍:录入专家信息,其中有Checkbox多选框,用于选择专家的擅长领域。专家的信息与对应的专业能力分别存储两张表。具体情况如下图

首先是界面:这个checkbox是由jQuery自动生成的,依据专业能力基础数据表生成。

生成checkbox的代码:

$(document).ready(function(){
<span style="white-space:pre">	</span>$.ajax({
	<span style="white-space:pre">	</span>type:"POST",
        <span style="white-space:pre">	</span>url:"http://localhost/yibu/index.php/Home/Expertadd/expertecho",
	<span style="white-space:pre">	</span>success:function(result){
        <span style="white-space:pre">		</span>var data = $.parseJSON(result);
        <span style="white-space:pre">		</span>var len =data.length;
        <span style="white-space:pre">		</span>var listHtml="";
		<span style="white-space:pre">	</span>for (var i = 0; i < len; i++) {
                <span style="white-space:pre">		</span>listHtml+="<input type='checkbox' id='"+data[i]["major"]+"' name='major' value='"+data[i]["id"]+"'<span style="white-space:pre">				</span>/>"+data[i]["major"]+"";  
		<span style="white-space:pre">	</span>}
		<span style="white-space:pre">	</span>listHtml ="<tr><td colspan='2'><div class='divcheck'>"+listHtml+"</div></td></tr>";
                <span style="white-space:pre">	</span>$('#myTable').append(listHtml)
         <span style="white-space:pre">	</span>}
<span style="white-space:pre">	</span>})
})




写入数据之前先做文本框和多选框的文本判断,包括各式,选择状态,必填字段等。这里贴一下判断多选框的代码

var boolMajor = cheMajor.is(':checked')//checkbox状态判断
遍历checkbox并赋值到数组

var dataMajor = new Array();
for (var i = 0; i < cheMajor.length; i++) {//遍历checkbox
<span style="white-space:pre">	</span>if(cheMajor[i].checked){
	<span style="white-space:pre">	</span>dataMajor.push({"majorid":cheMajor[i].value,"major":cheMajor[i].id});//专业能力数组赋值
	}
}


每次循环用push推入的都是一维数组,最后dataMajor会成为二维数组,接下来要对二维数组进行JSON序列化

var jsonMajor = JSON.stringify(dataMajor);//专业能力数组用JSON序列化

接下来传递数据到控制器

$.ajax({//调用Ajax
<span style="white-space:pre">	</span>type:"POST",
<span style="white-space:pre">	</span>url:"<{:U('Expertadd/add')}>",
<span style="white-space:pre">	</span>data:{'dataExpert':dataExpert,'jsonMajor':jsonMajor},//传递数据到控制器
<span style="white-space:pre">	</span>success:function(result){
<span style="white-space:pre">		</span>if(result=="success"){
<span style="white-space:pre">			</span>var appendDiv='<div id="appendDiv" class="alert green_alert"><p>专家信息写入成功!</p></div>';
<span style="white-space:pre">			</span>$("#clearfix").after(appendDiv);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">	</span>}
})


后端ThinkPHP对数组进行处理

$major=D("major");//定位数据表
$jsonMajor=$_POST["jsonMajor"];//接收JSON序列
$arrMajor = json_decode($jsonMajor,true);//专业能力数组反序列化
for($i=0;$i<$len;$i++){
<span style="white-space:pre">	</span>$arrMajor[$i]["expertid"]=$resultExpert;//专业能力数组加入对应专家ID
}
$resultMajor = $major->addall($arrMajor);
if($resultExpert>0 && $resultMajor>0){//两张表均写入成功输入信息给前端
<span style="white-space:pre">	</span>echo "success";
}

至此,这个二维数组从生成到保存到数据库就结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值