Ajax傳遞二維數組至後臺ThinkPHP控制器

最近爲單位作了專家庫的小程序,沒個專家有擅長的領域,這是經過一個checkbox來提交和編輯的。由於不想刷新頁面,使用Ajax異步傳輸。php

首先從專業數據表中讀取全部的專業,而且生成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++) {//循環將專業併入checkbox
           listHtml+="<input type='checkbox' id='"+data[i]["major"]+"' name='major' value='"+data[i]["id"]+"'/>"+data[i]["major"]+"";  
         }
         listHtml ="<tr><td colspan='2'><div class='divcheck'>"+listHtml+"</div></td></tr>";
         $('#myTable').append(listHtml)
      }
   })
})

這段代碼不只生成了checkbox,而且將專業名稱與對應的專業ID分別存儲到checkbox中。ajax

接下來要對checkbox狀態進行判斷:json

var boolMajor = cheMajor.is(':checked')//checkbox狀態判斷

若是checkbox處於選中狀態,進行遍歷取值,並存儲到二維數組:小程序

for (var i = 0; i < cheMajor.length; i++) {//遍歷checkbox
        if(cheMajor[i].checked){
          dataMajor.push({"majorid":cheMajor[i].value,"major":cheMajor[i].id});//專業能力數組賦值
        }
}

二維數組沒法直接傳遞到後臺ThinkPHP的控制器,須要進行JSON序列化:數組

var jsonMajor = JSON.stringify(dataMajor);//專業能力數組用JSON序列化

序列化之後能夠直接調用Ajax傳遞數據了:app

$.ajax({//調用Ajax
  type:"POST",
   url:"<{:U('Expertadd/add')}>",
   data:{'dataExpert':dataExpert,'jsonMajor':jsonMajor},//傳遞數據到控制器
   success:function(result){
     if(result=="success"){
       var appendDiv='<div id="appendDiv" class="alert green_alert"><p>專家信息寫入成功!</p></div>';
        $("#clearfix").after(appendDiv);
     }
  } })

後臺存入數據,須要將JSON字符串反序列化,注意加入參數「true」。這是爲了強制轉換爲數組。異步

$major=D("major");//定位數據表
$jsonMajor=$_POST["jsonMajor"];//接收JSON序列
$arrMajor = json_decode($jsonMajor,true);//專業能力數組反序列化
$len = count($arrMajor);
for($i=0;$i<$len;$i++){
  $arrMajor[$i]["expertid"]=$resultExpert;//專業能力數組加入對應專家ID
}
$resultMajor = $major->addall($arrMajor);
if($resultExpert>0 && $resultMajor>0){//兩張表均寫入成功輸入信息給前端
  echo "success";
}

JSON字符串反序列化之後,又進行了進一步加工,加入了對應的專家ID。url

至此,錄入的專家信息都有了對應的專業領域。spa

效果以下,首先是前臺界面:

插入的兩張數據表,專家信息表:

專家對應的專業能力表:

數據保存成功。

相關文章
相關標籤/搜索