我正在使用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。我到目前为止尝试过:
当我打开'PersonActions.php?action = list'我收到一条通知:
Notice: Undefined index: Name in C:\xampp\htdocs\PersonActions.php on line xx
我认为这意味着$ _POST ['名称']不存在?
答案 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方面。等,与主表一样。
希望这有帮助!