繁体   English   中英

Jtable中带有php的Ajax Post返回空数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM