介绍:录入专家信息,其中有Checkbox多选框,用于选择专家的擅长领域。专家的信息与对应的专业能力分别存储两张表。具体情况如下图
首先是界面:这个checkbox是由jQuery自动生成的,依据专业能力基础数据表生成。
生成checkbox的代码:
$(document).ready(function(){
$.ajax({
type:"POST",
url:"http://localhost/yibu/index.php/Home/Expertadd/expertecho",
success:function(result){
var data = $.parseJSON(result);
var len =data.length;
var listHtml="";
for (var i = 0; i < len; i++) {
listHtml+="/>"+data[i]["major"]+"";
}
listHtml ="
"+listHtml+"";
$("#myTable").append(listHtml)
}
})
})
写入数据之前先做文本框和多选框的文本判断,包括各式,选择状态,必填字段等。这里贴一下判断多选框的代码
var boolMajor = cheMajor.is(":checked")//checkbox状态判断遍历checkbox并赋值到数组
var dataMajor = new Array();for (var i = 0; i < cheMajor.length; i++) {//遍历checkbox
if(cheMajor[i].checked){
dataMajor.push({"majorid":cheMajor[i].value,"major":cheMajor[i].id});//专业能力数组赋值
}
}
每次循环用push推入的都是一维数组,最后dataMajor会成为二维数组,接下来要对二维数组进行JSON序列化
var jsonMajor = JSON.stringify(dataMajor);//专业能力数组用JSON序列化
接下来传递数据到控制器
$.ajax({//调用Ajax
type:"POST",
url:"",
data:{"dataExpert":dataExpert,"jsonMajor":jsonMajor},//传递数据到控制器
success:function(result){
if(result=="success"){
var appendDiv="
专家信息写入成功!";
$("#clearfix").after(appendDiv);
}
}
})
后端ThinkPHP对数组进行处理
$major=D("major");//定位数据表$jsonMajor=$_POST["jsonMajor"];//接收JSON序列$arrMajor = json_decode($jsonMajor,true);//专业能力数组反序列化for($i=0;$i$arrMajor[$i]["expertid"]=$resultExpert;//专业能力数组加入对应专家ID
}$resultMajor = $major->addall($arrMajor);if($resultExpert>0 && $resultMajor>0){//两张表均写入成功输入信息给前端
echo "success";
}
至此,这个二维数组从生成到保存到数据库就结束了。