Php 无法使用AJAX将数组数据从视图传递到控制器
在CodeIgniter(PHP)中使用AJAX时,数据(数组的数组)没有从视图传递到控制器 url在$.ajax中工作。它正在重定向到控制器中的方法Php 无法使用AJAX将数组数据从视图传递到控制器,php,jquery,arrays,codeigniter,Php,Jquery,Arrays,Codeigniter,在CodeIgniter(PHP)中使用AJAX时,数据(数组的数组)没有从视图传递到控制器 url在$.ajax中工作。它正在重定向到控制器中的方法 public function save() { $relatives_list = $this->input->post('data'); echo 'as'; echo $relatives_list; // the list is not shown here $this->
public function save() {
$relatives_list = $this->input->post('data');
echo 'as';
echo $relatives_list;
// the list is not shown here
$this->load->model('Batch');
$status = $this->Batch->save($relatives_list);
$this->output->set_content_type('application/json');
echo json_encode(array('status' => $status));
}
view.php(视图)
Welcome.php(控制器)
Batch.php(模型)
公共函数保存($relative_list){
$length=计数($relative_list);
对于($x=0;$x$relative_list[$x]['no'],
“firstname”=>$relative_list[$x]['firstname'],
“中间”=>$relative_list[$x]['middle'],
'last'=>$relative_list[$x]['last'],
);
}
试一试{
对于($x=0;$xdb->insert('hhh',$data[$x]);
}
回归"成功",;
}捕获(例外$e){
返回“失败”;
}
}
错误:
参数必须是实现可计数的数组或对象
根据您的脚本,它不是
data
而是data\u table
var data = {'data_table':table_data};
因此:
如果这不起作用,请发布您的数据的控制台.log
请注意:在完成故障排除后,您必须在json_encode
之前删除echos,否则jquery将无法解析响应。您在Batch.php第一个循环中覆盖$data
——我想您的意思是$data[]=array(…
谢谢!但是数据没有从视图传递到控制器。在echo'as'下面的welcome.php中有echo$relations\u列表。数据没有显示在控制台中。感谢您的输入,现在来自ajax的数组正在从视图传递到控制器。我现在收到一个模型错误。严重性:警告消息:count():参数必须是实现可计数的数组或对象文件名:models/Batch.php行号:6var_转储的结果是什么?var_转储正在工作!现在控制器中的echo$relations_列表正在工作。但是数据现在正在移动到模型中。“参数必须是实现可计数的数组或对象”是错误。*数据未移动到模型
public function save($relative_list){
$length = count($relative_list);
for($x = 0; $x < count($relative_list); $x++){
$data[] = array(
'no' => $relative_list[$x]['no'],
'firstname' => $relative_list[$x]['firstname'],
'middle' => $relative_list[$x]['middle'],
'last' => $relative_list[$x]['last'],
);
}
try {
for($x = 0; $x<count($relative_list); $x++){
$this->db->insert('hhh',$data[$x]);
}
return 'success';
}catch(Exception $e) {
return 'failed';
}
}
var data = {'data_table':table_data};
var_dump($this->input->post('data_table')