Jtable ajax帖子不工作

时间:2014-11-23 03:35:03

标签: javascript jquery ajax jtable

我正在使用JTable网站上的示例代码来获取PHP。我无法从AJAX POST中获取值。

我的JTableSimple.php中的javascript:

$(document).ready(function () {

        //Prepare jTable
        $('#PeopleTableContainer').jtable({
            title: 'Table of people',
            actions: {
                listAction: 'PersonActions.php?action=list',
                createAction: 'PersonActions.php?action=create',
                updateAction: 'PersonActions.php?action=update',
                deleteAction: 'PersonActions.php?action=delete'
            },
            fields: {
                PersonId: {
                    key: true,
                    create: false,
                    edit: false,
                    list: false
                },
                Name: {
                    title: 'Author Name',
                    width: '40%'
                },
                Age: {
                    title: 'Age',
                    width: '20%'
                },
                RecordDate: {
                    title: 'Record date',
                    width: '30%',
                    type: 'date',
                    create: false,
                    edit: false
                }
            }
        });

        //Load person list from server
        $('#PeopleTableContainer').jtable('load');

    });

PersonActions.php(只显示列表组件):

require_once 'config.php';
// connecting to mysql
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
// selecting database
mysql_select_db(DB_DATABASE);
//Getting records (listAction) 
if($_GET["action"] == "list")
{
    //Get Name
    $Name = $_POST['Name'];
    //SQL query
    $result = mysql_query("select * from user_data WHERE Name=$Name");
    //Add selected records into an array
    $rows = array();
    while($row = mysql_fetch_array($result))
    {
        $rows[] = $row;
    }

    //Return result to jTable
    $jTableResult = array();
    $jTableResult['Result'] = 'OK';
    $jTableResult['Records'] = $rows;
    print json_encode($jTableResult);
}

我正在使用XAMPP。我到目前为止尝试过:

  • 使用var_dump($ _ POST),不返回任何内容。
  • 重新安装XAMPP
  • 重新安装JTable,JQuery,Jquery UI和所有css文件的所有头文件。
  • 使用GET代替POST,但这也不起作用。

当我打开'PersonActions.php?action = list'我收到一条通知:

Notice: Undefined index: Name in C:\xampp\htdocs\PersonActions.php on line xx

我认为这意味着$ _POST ['名称']不存在?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。尝试在表属性中的actions组件之前添加它:

ajaxSettings: {
        type: 'POST', 
        data: {'VariableName': 'VariableValue'},
        url: './PersonActions.php'
        },

这是因为操作列表'不会通过AJAX方法将任何数据发布到PersonActions.php。你必须手动完成。

对于其他操作,例如更新'并且'删除'您不需要进行任何其他更改,只需使用$ _POST [' Fieldname'],如JTable示例代码中所示。

另外:我建议安装Firebug。它对查看POST数据非常有用,并提供了一个额外的调试工具。

编辑#1对于使用PHP的主/子: 如果要添加子表,请在主表中添加以下代码作为附加字段。我已将该字段命名为“ChildTableButton'。

           fields: {
                ChildTableButton: {
                        title: '',
                        width: '3%',
                        sorting: false,
                        edit: false,
                        create: false,
                        display: function (ChildData) {
                            //Image that will open child table
                            var $img = $('<img src="./img/more.png"/>');
                            //Open child table when user clicks the image
                            $img.click(function () {
                                $('#PeopleTableContainer').jtable('openChildTable',
                                        $img.closest('tr'),
                                        {
                                            title: 'Title',
                                            actions: {
                                                listAction: './tableactions.php?action=listchild',
                                               updateAction:'./tableactions.php?action=updatechild',
                                                deleteAction: './tableactions.php?action=deletechild'
                                                },
                                            fields: {
                                                Field1: {
                                                    title: 'Field 1 child table',
                                                    key: true,
                                                    create: false,
                                                    edit: false,
                                                    width: '50%'
                                                },
                                                Field2: {
                                                    title: 'Field 2 child table',
                                                    width: '50%'
                                                }
                                            }
                                        }, function (data) { //opened handler
                                            data.childTable.jtable('load');
                                        });
                            });
                            //Return image to show on the person row
                            return $img;
                        }
                    },

然后,您可以通过检查action =&#39; listchild&#39;来处理PHP方面。等,与主表一样。

希望这有帮助!