我有一个表单,它获取访问类型名称(文本框),描述(文本框)及其相应的功能(选中的复选框)。访问类型名称和描述保存在表中,并且还有另一个表,用于访问类型id和函数。
access_type_id | function_id
1 | 1
1 | 2
到目前为止,我有一系列已检查的复选框,这些复选框通过ajax传递给控制器。该数组看起来像[1,2],其中1和2是已选中复选框的ID。
$('#thisForm').on('submit', function() {
var functionArray = $.map($('input:checkbox:checked'), function(e, i) {
return +e.value;
});
var string = $.ajax({
url: 'checkFields',
async: false,
dataType: "json",
type: 'POST',
data: {'acfFunctions': functionArray}
});
});
在控制器中我试图创建一个数组数组但是当我将它传递给模型时,会发生错误。我该如何解决这些问题。提前谢谢。
JSON.parse:意外字符
array_keys()期望参数1为数组,给定整数
public function checkFields() {
$data= array(
'access_type_name' => trim(ucwords($this->input->post('accessName'))),
'access_type_description' => trim(ucwords($this->input->post('accessDescription')))
);
$id = $this->home_model->saveAccessType($data);
//This is working. It really returns the id.
$acfFunctions = $this->input->post('acfFunctions');
$i=0;
$data2 = array();
for($i; $i<count($acfFunctions); $i++){
$data2[$i]=array(
$data2['access_type_id'] = $id,
$data2['function_id'] = $acfFunctions[$i]
);
}
$this->home_model->saveAccessTypeFunction($data2);
redirect('home/setPermissions');
}
这是模型
public function saveAccessTypeFunction($data){
$result=$this->db->insert_batch('access_type_function',$data);
if($result){
return $data;
}
return false;
}
答案 0 :(得分:0)
您必须更改以下代码。您必须在数据数组中提及要插入到db表中的字段名称。
for($ i; $ i&lt; count($ acfFunctions); $ i ++)
{
$data2[$i]=array( 'access_type_id' => $id, // access_type_id is table field name 'function_id' => $acfFunctions[$i] ); }
供参考:CI Tutorial