[英]Ajax Post with php in jtable is returning empty data
我一直在为此苦苦挣扎,但我仍然找不到正确的解决方法。 我正在使用jtable,事情是一切正常,除了子元素。
我在按钮上添加了一个子表,以便在其打开时显示与先前ID相关的数据。 事情是listAction,updateAction和createAction可以正常工作,但是在谈到deleteAction时,它并没有通过发布发送任何信息,因此我无法删除想要的确切行。 这是jquery(jtable)代码:
asignaturas: {
title: '',
width: '5%',
create: false,
edit: false,
display: function (asignaData) {
//Create an image that will be used to open child table
var $img = $('<img src="metro/list_metro.png" style="opacity:0.4;"title="Editar Asignaturas" />');
//Open child table when user clicks the image
$img.click(function () {
$('#crudTable').jtable('openChildTable',
$img.closest('tr'),
{
title: asignaData.record.nombre + ' - Assignatures',
actions: {
listAction: 'index.php?ex=jprofesor&action=prepara&prepara=list&id=' + asignaData.record.dni,
deleteAction: 'index.php?ex=jprofesor&action=prepara&prepara=delete&id=' + asignaData.record.dni,
updateAction: 'index.php?ex=jprofesor&action=prepara&prepara=update&id=' + asignaData.record.dni,
createAction: function (postData) {
//console.log("creating from custom function...");
return $.Deferred(function ($dfd) {
$.ajax({
url: 'index.php?ex=jprofesor&action=prepara&prepara=create&id=' + asignaData.record.dni,
type: 'POST',
dataType: 'json',
data: postData,
success: function (data) {
$dfd.resolve(data);
$('#crudTable').jtable('reload');
$('.ui-dialog-titlebar-close').click();
},
error: function () {
$dfd.reject();
}
});
});
}
},
fields: {
dni: {
type: 'hidden',
defaultValue: asignaData.record.dni
},
codigo: {
title: 'Asignatura',
width: '80%',
// list: false,
options: "index.php?ex=jprofesor&action=prepara&prepara=asignaturas"
}
}
}, function (data) { //opened handler
data.childTable.jtable('load');
});
});
//Return image to show on the person row
return $img;
}
//acaba child
}
},
这是删除的php代码:
$query = $query." and p.dni = '".$dni."'";
$dni = $conn->real_escape_string($_GET['id']);
$codigo = $conn->real_escape_string($_POST['codigo']);
$conn->query("delete from prepara where dni = '".$dni."' and asignatura = '".$codigo."'");
retornarPrepara($conn, $query);
function retornarPrepara($conn, $query, ) {
$rs = $conn->query($query);
$num_rows = $rs->num_rows;
$rows = array();
if($rs) {
while($row = $rs->fetch_assoc())
{
$rows[] = $row;
}
$jTableResult = array();
$jTableResult['Result'] = "OK";
$jTableResult['Records'] = $rows;
$jTableResult['TotalRecordCount'] = $num_rows;
print json_encode($jTableResult);
}
}
据我所知,代码是可以的,但是在jquery中一定缺少通过邮寄发送字段codigo的东西,但是我认为jtable会自动执行此操作,因为它与父级jtable一起完成没有任何问题。
我要回答我的问题,因为我终于使它起作用了……这是一个愚蠢的错误,但是同时意识到这一点很好。 事情是这样的,在学校里,我们收到了一些没有id的数据库表,所以我并没有像对待主键那样真正对待字段,无论如何deleteAction只在ajax帖子中发送该键。要获取它,请将key:true放入要获取的字段中。 一旦添加key:true,一切就可以正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.