此文章是在開發批量刪除功能時遇到問題總結的。
遇到的問題:
當批量刪除時,需要把多個記錄的id拼接成數組通過ajax請求到tp5控制器的方法裏。js數組的拼接和tp5的後臺接收請求中碰到無法接收全部的數組,也就是隻接收了數組中的最後一個。。。(在java開發的SSM項目中接收ajax傳遞的參數是比較簡單的)
解決思路:
在前端的ajax請求時,將要傳遞的數組進行序列化,然後在後臺接收的時候直接接收參數名即可。
前端ajax代碼:
//批量刪除 該方法我是用來調用的
//url:是請求後臺的地址,{:url('控制器名/方法名')}
//id_arr:是拼接完成的數組,批量刪除記錄的id,例如:[1,2,3,4]
function deleteFlaseGroup(url,id_arr){
console.log(id_arr);
$.ajax({
url:url,
type: 'POST',
dataType: 'json',
traditional:true,
data: {
ids:JSON.stringify(id_arr)//數組序列化
},
}).done(function(data) {
console.log("後臺ajax返回:")
console.log(data);//打印後臺返回的數據
//setToast(data,'deleteFalse');
})
.fail(function(data) {
console.log('error');
console.log(data);
//setToast(false,'deleteFalse');
});
}
tp5後臺控制器代碼:
//批量刪除
public function deleteAll(){
if(request()->isAjax()){
$datas = $this->request->param("ids");//ids:前端ajax標記的參數名
//var_dump($datas);
echo $datas;//返回前端
}else{
$this->error("非法請求");
}
}