php - 无法使用 AJAX 将数组数据从视图传递到控制器
问题描述
在 CodeIgniter (PHP) 中使用 AJAX 时,数据(数组的数组)没有从视图传递到控制器
url 在 $.ajax 中工作。它正在重定向到控制器中的方法
view.php(视图)
$('#save').click(function(){
var table_data = [];
// use .each to get all data
$('#data_table tr').each(function(row,tr){
// create array again to store data by row
// get only data with value
if ($(tr).find('td:eq(0)').text() == "") {
} else {
var sub = {
'no' : $(tr).find('td:eq(0)').text(),
'firstname' : $(tr).find('td:eq(1)').text(),
'middle' : $(tr).find('td:eq(2)').text(),
'last' : $(tr).find('td:eq(3)').text(),
};
table_data.push(sub);
}
});
//use ajax to insert the data
console.log(table_data);
var data = {'data_table':table_data};
console.log(data);
$.ajax({
data : data,
type : 'POST',
url : 'save',
crossOrigin : false,
dataType : 'array',
success: function(msg){
$('.answer').html(msg);
}
});
Welcome.php(控制器)
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));
}
Batch.php(模型)
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';
}
}
错误:
参数必须是一个数组或实现可数的对象
解决方案
根据你的剧本,data
它不会是data_table
var data = {'data_table':table_data};
因此:
var_dump($this->input->post('data_table')
如果这不起作用,请发布console.log
您的data
var。
请注意:您必须在完成故障排除后删除echos
之前的json_encode
内容,否则 jquery 将无法解析响应。
推荐阅读
- c# - 冒泡更新并发异常以查看
- install4j - Mac OSX 应用商店应用程序上的 install4j 启动器问题
- xml - XPTY0004:不允许将多个项目的序列作为 string-length() 的第一个参数
- python - python - 在列中读取具有多种语言的 .csv
- azure - Docker 任务:如何从构建/发布变量设置 Azure 容器注册表名称或 ID?
- python - Python:通过向所有元素添加字符串来更新列表
- sql - NodeJS + Express“错误:-2006,\,无法绑定参数”
- php - 我的路由组是否适用于需要正确编写管理员角色的路由?
- node.js - nodejs的链接文件地址的唯一GET()方法
- python - .py python 文件显示代码而不是在 webhost 上执行