【发布时间】:2020-10-23 00:41:01
【问题描述】:
我有一系列学生的分数:
<span>Teacher Name : </span> <input id="teacher" type="text">
<span>Course Name : </span> <input id="course" type="text">
<table id="students_list">
<tr>
<td><span>George</span></td>
<td><input class="mark-field" type="text" id="1105"/></td>
</tr>
<tr>
<td><span>Danny</span></td>
<td><input class="mark-field" type="text" id="1351"/></td>
</tr>
<tr>
<td><span>Linda</span></td>
<td><input class="mark-field" type="text" id="3486"/></td>
</tr>
<tr>
<td><span>Mario</span></td>
<td><input class="mark-field" type="text" id="9032"/></td>
</tr>
…
</table>
<button id="save_marks">SAVE</button>
我使用这种方法用 JQUERY 创建一个数组并将其发送到服务器:
$(document).on('click', '#save_marks', function () {
var dataArray = [];
var i = 1;
$('.mark-field').each(function () {
dataArray[i] = {
'teacher' : $('#teacher').val(),
'course' : $('#course').val(),
'mark' : $(this).val(),
'id' : $(this).attr('id')
};
i++;
});
dataArray[0] = i;
$.ajax({
url: 'save-marks',
data: {dataset: dataArray},
type: 'post',
success: function (res) {
alert(res);
}
});
});
并使用这种方式将其更改为 PHP (CodeIgniter) 数组并将其保存在数据库中:
public function save_marks() {
$arrayLength = $this->input->post('data')[0];
for ($i = 1; $i < $arrayLength; $i++) {
$arr[] = array(
'TEACHERS' => $this->input->post('dataset')[$i]['teacher'],
'COURSES' => $this->input->post('dataset')[$i]['course'],
'MARKS' => $this->input->post('dataset')[$i]['mark'],
'ID' => $this->input->post('dataset')[$i]['id']
);
}
$this->db->insert_batch('marks_table', $arr);
die($this->db->affected_rows() . ' marks were saved.');
}
现在我的问题:
-
有没有其他方法可以在服务器端计算数组长度?
-
在服务器端和客户端都构建数组是一种好方法吗?
如果没有
-
还有其他方法可以创建它们并将它们发送到服务器吗?
谢谢。
【问题讨论】:
-
如果已有数组,为什么要重新创建?
-
您可以转换为 json 并将其设置为字符串,或者尝试使用
data: {'dataset[]': dataArray},
标签: php jquery arrays ajax codeigniter