我在运行时使用数据库数据填充了几行数据。每行都有一个按钮。单击按钮时,我想从数据库中删除该行。我在那个按钮上放了一个data-id
。单击该按钮,向php发送一个ajax请求。但是我在php中得到了null
id。下面是我使用的代码。
HTML
<span id="delete_btn" class="btn btn-default" data-id="<?php echo $id; ?>">
<i class="glyph-icon icon-close"> Delete</i>
</span>
JavaScript
$('#feedbackTable').on('click', '#delete_btn', function (event) {
var client_id = $(this).data('id');
console.log(client_id); // I get the exact id
$.ajax({
url: url + 'client/delete',
type: 'POST',
data: {'id' : client_id},
dataType: 'json',
async: false,
cache: false,
contentType: false,
processData: false,
error: function (error_data) {
console.log(error_data);
},
success: function (data) {
console.log(data);
}
});
return false;
});
Client.php
public function delete_client() {
if ($this->input->method(TRUE) == 'POST') {
$id = $this->input->post('id');
if (is_numeric($id)) {
$id = intval($id);
echo json_encode(array(
"is_error" => false,
"message" => $id
));
return;
} else {
echo json_encode(array(
"is_error" => true,
"message" => $id
));
return;
}
} else {
echo json_encode(array(
"is_error" => true,
"message" => "Invalid request"
));
return;
}
}
javascript控制台打印一个用户id。但是在ajax响应控制台中打印
Object {is_error: true, message: null}
我做错了什么?对不起,我的英语很差。提亚
发布于 2016-06-12 16:34:44
可以通过类型转换来转换值,而不是使用is_numeric()
。请尝试以下操作
public function delete_client() {
if ($this->input->method(TRUE) == 'POST') {
$id = (int) $this->input->post('id');
if (!empty($id)) {
echo json_encode(array(
"is_error" => false,
"message" => $id
));
return;
} else {
echo json_encode(array(
"is_error" => true,
"message" => $id
));
return;
}
} else {
echo json_encode(array(
"is_error" => true,
"message" => "Invalid request"
));
return;
}
}
其次,从ajax中删除不必要的参数
$('#feedbackTable').on('click', '#delete_btn', function (event) {
var client_id = $(this).data('id');
console.log(client_id); // I get the exact id
$.ajax({
url: url + 'client/delete',
type: 'POST',
data: {'id' : client_id},
dataType: 'json',
error: function (error_data) {
console.log(error_data);
},
success: function (data) {
console.log(data);
}
});
return false;
});
以下内容已删除。
async: false,
cache: false,
contentType: false,
processData: false,
当您的表单包含图像等时使用contentType
、processData
等。此处不需要
发布于 2016-06-12 15:23:51
试一试
var client_id = $(this).attr('data-id');
而不是
var client_id = $(this).data('id');
发布于 2016-06-12 16:47:52
首先尝试发送Ajax请求而不附加到click event以及{ too:'far'}数据,然后检查服务器端的bar并回复我。我想知道为什么多个元素具有相同的is属性。
<span id="delete_btn" class="btn btn-default"..
而不是class="delete_btn“
https://stackoverflow.com/questions/37771648
复制相似问题