1 回答
TA贡献1862条经验 获得超7个赞
1.服务器端还有其他计算数组长度的方法吗?
是的,通过使用sizeof($array)
,您可以获取数组的数组长度。
2. 在服务器端和客户端都建一个数组是不是一个好方法?
使用name="mark-field[]"
您可以发送标记列表,而无需在 JavaScript 中手动构建它,也可以使用sizeof($array)
您在服务器端获取数组大小,而无需从 JavaScript 发送大小。
3.是否有其他方法来创建并将它们发送到服务器?
就我个人而言,我会做这样的事情:
<form id = "form_data" method="post">
<span>Teacher Name : </span> <input id="teacher" name="teacher" type="text">
<span>Course Name : </span> <input id="course" name="course" type="text">
<table id="students_list">
<tr>
<td><span>George</span></td>
<td>
<input name="mark[]" type="text" id="1105"/>
<input name="mark_id[]" type="hidden" value="1105"/>
</td>
</tr>
<tr>
<td><span>Danny</span></td>
<td>
<input name="mark[]" type="text" id="1351"/>
<input name="mark_id[]" type="hidden" value="1351"/>
</td>
</tr>
<tr>
<td><span>Linda</span></td>
<td>
<input name="mark[]" type="text" id="3486"/>
<input name="mark_id[]" type="hidden" value="3486"/>
</td>
</tr>
</table>
<button id="save_marks">SAVE</button>
</form>
和 JavaScript 部分
$(document).on('submit', '#form_data', function (event) {
event.preventDefault();
var data = new FormData(this);
$.ajax({
//fill url with your controller name
url:"<?php echo base_url(); ?>controllername/save_marks",
method:"POST",
data: data,
async: false,
processData: false,
contentType: false,
cache:false,
dataType:"json",
success:function(returndata)
{
//do something with your returned data
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(thrownError);
}
});
});
在你的控制器中:
public function save_marks() {
$teacher= $this->input->post('teacher',true);
$course= $this->input->post('course',true);
//mark & mark_id is an array
$mark= $this->input->post('mark',true);
$mark_id= $this->input->post('mark_id',true);
$arr = array();
foreach($mark_id as $key => $row)
{
$arr[] = array(
'TEACHERS' => $teacher,
'COURSES' => $course,
'MARKS' => $mark[$key],
'ID' => $row
);
}
$this->db->insert_batch('marks_table', $arr);
//die($this->db->affected_rows() . ' marks were saved.');
echo json_encode($arr);
}
通过发送 formdata,您不需要手动构造数组,但是由于您需要将其发送mark_id到控制器,因此您需要再添加 1 个字段来发送mark_id
- 1 回答
- 0 关注
- 126 浏览
添加回答
举报