2014-11-23 89 views
3

我使用直接從PHP的JTable網站的示例代碼。我無法從AJAX POST獲取值。Jtable ajax後無法工作

我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行動=名單' 我收到通知說:

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

我假設意味着$ _ POST [ '名稱']不存在?

回答

0

我有同樣的問題。嘗試動作成分在你的表格屬性之前添加此:

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; 
         } 
        }, 

您可以用PHP端通過檢查,然後處理,如果行動=「listchild」等,以同樣的方式爲你的主表。

希望這會有所幫助!

+0

完美的作品!謝謝。你有沒有嘗試過使用父母/孩子與PHP?無法找到它或找到一個好例子。 – 2014-11-24 05:06:42

+0

我已經更新了答案,以包含PHP的主/子代碼片段。 – Calum 2014-11-24 05:54:09

+0

現在,我會給你一個旋風...... – 2014-11-24 05:57:02