[英]Update Database Record with Ajax in Codeigniter
我正在尝试从ajax响应中使用ajax更新数据库记录,并获得成功消息,但实际的数据库记录根本没有更新。 但是它想知道,当查询不更新数据库时,ajax响应应如何抛出成功消息。
视图:
// AJAX code to update the database // update marks when form is submitted $('#updateMarks').on('submit',function(event) { event.preventDefault(); var practical_mark = $("#mark_written").val(); var written_mark = $("#mark_practical").val(); var comment = $("#comment").val(); var mark_id = $("#mark_id").val(); $.ajax({ type: "POST", url: "<?php echo site_url('admin/exam_marks_update'); ?>", data: { practical_mark : practical_mark, written_mark: written_mark, comment : comment, mark_id : mark_id }, success: function(response) { alert("success"); }, error: function(){ alert("Error"); }, }); });
<?php foreach($marks as $row2): ?> <form method="post" role="form" id="updateMarks"> <tr> <td class="text-center"><?php echo $student['name']; ?></td> <td> <!-- create two col table for marks category --> <table class="table table-bordered table-hover toggle-circle"> <thead> <tr> <th data-toggle="true" class="text-center"><?php echo get_phrase('written_exam'); ?></th> <th data-toggle="true" class="text-center"><?php echo get_phrase('practical_exam'); echo get_phrase('_(out_of_100)'); ?></th> </tr> </thead> <tbody> <tr> <td class="text-center"><input type="number" value="<?php echo $row2['written_mark_obtained'];?>" id="mark_written" name="mark_written" class="form-control" /></td> <td class="text-center"><input type="number" value="<?php echo $row2['practical_mark_obtained'];?>" id="mark_practical" name="mark_practical" class="form-control"/></td> </tr> </tbody> </table> <!-- end create two col table for marks category --> </td> <td class="text-center"><textarea class="form_control" id="comment" name="comment" rows="4" > <?php echo $row2['comment'] ?> </textarea></td> <td class="text-center"> <input type="hidden" id="mark_id" name="mark_id" value="<?php echo $row2['mark_id'];?>" /> <button type="submit" class="btn btn-block btn-success btn-md"><i class="icon pe-pen" aria-hidden="true"></i><?php echo get_phrase('update'); ?></button> </td> </tr> </form> <?php endforeach; ?>
控制器:
function exam_marks_update(){ $data['written_mark_obtained'] = $this->input->post('written_mark'); $data['practical_mark_obtained'] = $this->input->post('practical_mark'); $data['comment'] = $this->input->post('comment'); $this->crud_model->update_student_marks($data, $this->input->post('mark_id')); }
模型
function update_student_marks($data, $mark_id){ $this->db->where('mark_id', $mark_id); $this->db->update('mark', $data); }
您的控制器正在检索不存在的输入...您需要传递name, id
作为输入,而不是您要回显的值...请参见控制器:
function exam_marks_update(){
$data = array(
'written_mark_obtained' => $this->input->post('written_mark'),
'practical_mark_obtained' => $this->input->post('practical_mark'),
'comment' => $this->input->post('comment')
);
$this->db->where('mark_id', $this->input->post('mark_id'));
$this->db->update('mark', $data);
}
并更改此:
var comment = $("#comment").val();
至
var comment = $("#comment").html();
由于评论是textarea ...
如果对服务器的请求成功,则始终调用jQuery ajax success
回调函数。 您需要从服务器返回响应数据以验证数据库操作何时成功。 我已经编辑了您的代码,这可能对您有用。
模型
function update_student_marks($data, $mark_id){
.....
return $this->db->update('mark', $data);
}
控制器::
function exam_marks_update(){
.....
if($this->crud_model->update_student_marks($data, $this->input->post('mark_id'))){
echo json_encode(array('success' => true));
exit;
} else {
echo json_encode(array('success' => false));
exit;
}
}
视图
$.ajax({
type: "POST",
url: "<?php echo site_url('admin/exam_marks_update'); ?>",
dataType :'json',
data: { practical_mark : practical_mark,
written_mark: written_mark,
comment : comment,
mark_id : mark_id
},
success: function(response)
{
if (response.success === true){
alert("success");
} else {
alert('failed');
}
},
error: function(){
alert("Error");
},
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.