使用 AJAX 和 PHP 删除用户记录时遇到的问题
Issue Faced while deleting user record using AJAX and PHP
场景:
我使用AJAX删除记录,PHP作为编程语言。 AJAX 部分如下:
这里的$('#id')
是按钮的id
,它包含了用户id的值,在这部分的帮助下动态地从数据库中获取:id='.$d['ID'].'
在前端实现。
<script>
function deleteRecord() {
var var1 = $('#id').html();
var result = confirm("Do you want to delete this Record?");
if(result){
//call ajax
$.ajax({
url: '<?php echo base_url();?>index.php/Device/delete',
type: 'POST',
data: {
id: var1
},
success: function(result){
$("#id").html(result);
alert('You have successfully deleted the user.');
},
error(e){
alert('Problem while interacting to the server.');
}
});
}
else{
console.log('Operation Cancelled.');
}
}
</script>
这是Button删除记录的前端部分。
我已经使用 id='.$d['ID'].'
从数据库动态获取 id 的值。
<td> <button class="btn" type="submit" onclick="deleteRecord()" id='.$d['ID'].'>Delete
</button> </td>
这是url中提到的AJAX:
url: '<?php echo base_url();?>index.php/Device/delete'
在上面的URL中,Device是Controller的名字,delete 是 controller 的方法,如下所示:
public function delete($id = '') {
$login = $_SESSION['username'];
if (! in_array($login, $this->main_model->get_authorized_users())) {
$redirect = site_url('device');
redirect($redirect, 'refresh');
}
if ($this->input->post('submit')) {
$username = $this->input->post('username');
$deviceid = $this->input->post('deviceid');
if ($deviceid == null || $username == null || $login == null) {
$redirect = site_url('device');
redirect($redirect, 'refresh');
return;
}
} else {
if ($id == '') {
$redirect = site_url('device');
redirect($redirect, 'refresh');
}
$res = $this->device_model->delete();
$data['action'] = 'delete';
$data['id'] = $id;
$data['result'] = $this->device_model->get_device($id);
$data['body'] = $this->load->view('register_view', $data, true);
$this->load->view('template', $data);
}
}
这是模型部分:
function delete(){
$username = $this->input->get('username');
$deviceid = $this->input->get('deviceid');
$id = $this->input->get('id');
$language= $this->input->get('language');
$deleted_by=$_SESSION['username'];
$sql = "DELETE FROM devices
WHERE id = $id";
$query = $this->db->query ( $sql );
//log update
$this->log_device_delete($id,$username,$deviceid,$deleted_by);
}
当前输出:
- 当按下DELETE按钮时,会显示确认框。
- 在确认框中,询问“是否要删除此记录?”。
面临的问题:
当用户按下 确定 按钮时,将显示名为“您已成功删除用户。”的消息 但是记录没有被删除.
所需的解决方案:
当用户按下确认框上的确定按钮时,用户记录应该被删除。
这里需要什么修正?
非常感谢您的建议。
您正在 id
属性中使用 $d['ID']
。但它需要在某些字段中作为值放置。
您需要更新的代码是:
<td>
<button class="btn" type="submit" onclick="deleteRecord(this)" data-id="<?php echo $d['ID']; ?>">Delete</button>
</td>
并在 JS 中更新为:
function deleteRecord(e) {
var var1 = $(e).data("id");
尝试数据属性为
<td> <button class="btn" type="submit" onclick="deleteRecord()" data-id=".$d['ID'].">Delete
</button> </td>
然后在 deleteRecord 函数中获取该值作为
var var1 = $(this).attr("data-id");
您确定在 SQL 查询中输入了正确的 ID 吗?
你说:
When user presses the OK button then the message called "You have successfully deleted the user." is displayed but the record is not deleted.
您没有错误,AJAX 调用了成功函数。都逼我考虑ID问题
场景:
我使用AJAX删除记录,PHP作为编程语言。 AJAX 部分如下:
这里的$('#id')
是按钮的id
,它包含了用户id的值,在这部分的帮助下动态地从数据库中获取:id='.$d['ID'].'
在前端实现。
<script>
function deleteRecord() {
var var1 = $('#id').html();
var result = confirm("Do you want to delete this Record?");
if(result){
//call ajax
$.ajax({
url: '<?php echo base_url();?>index.php/Device/delete',
type: 'POST',
data: {
id: var1
},
success: function(result){
$("#id").html(result);
alert('You have successfully deleted the user.');
},
error(e){
alert('Problem while interacting to the server.');
}
});
}
else{
console.log('Operation Cancelled.');
}
}
</script>
这是Button删除记录的前端部分。
我已经使用 id='.$d['ID'].'
从数据库动态获取 id 的值。
<td> <button class="btn" type="submit" onclick="deleteRecord()" id='.$d['ID'].'>Delete
</button> </td>
这是url中提到的AJAX:
url: '<?php echo base_url();?>index.php/Device/delete'
在上面的URL中,Device是Controller的名字,delete 是 controller 的方法,如下所示:
public function delete($id = '') {
$login = $_SESSION['username'];
if (! in_array($login, $this->main_model->get_authorized_users())) {
$redirect = site_url('device');
redirect($redirect, 'refresh');
}
if ($this->input->post('submit')) {
$username = $this->input->post('username');
$deviceid = $this->input->post('deviceid');
if ($deviceid == null || $username == null || $login == null) {
$redirect = site_url('device');
redirect($redirect, 'refresh');
return;
}
} else {
if ($id == '') {
$redirect = site_url('device');
redirect($redirect, 'refresh');
}
$res = $this->device_model->delete();
$data['action'] = 'delete';
$data['id'] = $id;
$data['result'] = $this->device_model->get_device($id);
$data['body'] = $this->load->view('register_view', $data, true);
$this->load->view('template', $data);
}
}
这是模型部分:
function delete(){
$username = $this->input->get('username');
$deviceid = $this->input->get('deviceid');
$id = $this->input->get('id');
$language= $this->input->get('language');
$deleted_by=$_SESSION['username'];
$sql = "DELETE FROM devices
WHERE id = $id";
$query = $this->db->query ( $sql );
//log update
$this->log_device_delete($id,$username,$deviceid,$deleted_by);
}
当前输出:
- 当按下DELETE按钮时,会显示确认框。
- 在确认框中,询问“是否要删除此记录?”。
面临的问题:
当用户按下 确定 按钮时,将显示名为“您已成功删除用户。”的消息 但是记录没有被删除.
所需的解决方案:
当用户按下确认框上的确定按钮时,用户记录应该被删除。
这里需要什么修正?
非常感谢您的建议。
您正在 id
属性中使用 $d['ID']
。但它需要在某些字段中作为值放置。
您需要更新的代码是:
<td>
<button class="btn" type="submit" onclick="deleteRecord(this)" data-id="<?php echo $d['ID']; ?>">Delete</button>
</td>
并在 JS 中更新为:
function deleteRecord(e) {
var var1 = $(e).data("id");
尝试数据属性为
<td> <button class="btn" type="submit" onclick="deleteRecord()" data-id=".$d['ID'].">Delete
</button> </td>
然后在 deleteRecord 函数中获取该值作为
var var1 = $(this).attr("data-id");
您确定在 SQL 查询中输入了正确的 ID 吗?
你说:
When user presses the OK button then the message called "You have successfully deleted the user." is displayed but the record is not deleted.
您没有错误,AJAX 调用了成功函数。都逼我考虑ID问题