2017-03-15 77 views
1

在我的代碼中,我試圖從表單控件中的3個輸入中獲取數據。 但是,當我單擊提交時,不捕獲數據並重新加載頁面。 提交按預期觸發table.draw(),但輸入中的值都未被捕獲並添加到請求中。 我試圖直接在ajax塊中將值拉到提交函數中的單獨變量中。無法從我的表單中獲取數據到數據表請求

我在做什麼錯?

<?php 
# $Id$ 
session_start(); 
?> 
<!DOCTYPE html> 

<html> 
<head> 
    <meta charset="utf-8"> 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <!-- The above 3 meta tags *must* come first in the head; any other head  content must come *after* these tags --> 
    <!-- Bootstrap --> 
    <meta content="en-us" http-equiv="Content-Language" /> 
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type" /> 
    <script src="js/jquery-1.11.2.js"></script> 
    <script src="js/bootstrap.min.js"></script> 
    <script src="js/bootstrap-table.js"></script> 
    <script src="js/datatables.js"></script> 
    <link href="css/bootstrap.min.css" rel="stylesheet" /> 
    <link href="css/bootstrap-table.min.css" rel="stylesheet" /> 
    <link href="css/datatables.min.css" rel="stylesheet" /> 
    <link href="css/apirpt.css" rel="stylesheet" /> 
    <title>Status</title> 
</head> 
<body style="padding-top:20px"> 
    <div class="col-md-12"> 
     <div class="well"> 
      <div class="container"> 
       <h1>Status Report</h1> 
       <div class="col-md-9"> 
        <form class="form-inline"> 
         <div class="form-group"> 
          <label for="reqid">ReqID:</label> 
          <input type="text" class="form-control"  name="reqID" placeholder="Enter Req ID here" id="reqID"> 
         </div> 
         <div class="form-group"> 
          <label for="start">Start Date:</label> 
          <input type="text" class="form-control"  name="dtStart" placeholder="MM/DD/YYYY" id="dtStart"> 
         </div> 
         <div class="form-group"> 
          <label for="end">End Date:</label> 
          <input type="text" class="form-control" name="dtEnd" placeholder="MM/DD/YYYY" id="dtEnd"> 
         </div> 
         <button id="btnSubmit" type="submit" class="btn btn-success">Submit</button> 
        </form> 
       </div> 
         <table id="grid" class="table table-striped table- bordered display compact" width="100%" > 
          <thead> 
           <tr> 
            <th>Code</th> 
            <th>From</th> 
            <th>To</th> 
            <th>Req ID</th> 
            <th>Transaction Date</th> 
            <th>Old Code Status</th> 
            <th>New Code Status</th> 
           </tr> 
          </thead> 
          <tfoot> 
           <tr> 
            <th>Code</th> 
            <th>From</th> 
            <th>To</th> 
            <th>Req ID</th> 
            <th>Transaction Date</th> 
            <th>Old Code Status</th> 
            <th>New Code Status</th> 
           </tr> 
          </tfoot> 
         </table> 
       </div> 
      </div> 
     </div> 
    </div> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $('#grid tfoot th').each(function() { 
       var title = $('#grid thead th').eq($(this).index()).text(); 
       $(this).html('<input type="text" placeholder="Search ' +  title + '"/>'); 
      }); 
      var vReqID; 
      var table = $('#grid').DataTable({ 
       "sPaginationType" : "full_numbers", 
       "ajax": { 
         "url" : "data/get_status.php", 
         data: function(data) { 
          //$('form').serialize(); 
          data.dtStart = $("#dtStart").val(); 
          data.dtEnd = $("#dtEnd").val(); 
          data.reqID = vReqID; //$("#reqID").val(); 
          } 
         }, 
       "processing" : false, 
       "serverSide" : true, 
       "fixedHeader" : true, 
       "lengthMenu" : [[10, 25, 50, 100, 200],[10,25,50,100,200]], 
       "pageLength" : 25, 
       "sScrollX" : "110%", 
       "sScrollY" : "600px", 
       "bScrollCollapse": true, 
       "columnDefs": [ 
        { "type": "signed-num", "targets": 3} 
       ] 
      }); 
      table.columns().every(function() { 
       var datatableColumn = this; 
       $(this.footer()).find('input').on('keyup change', function()  { 
        datatableColumn.search(this.value).draw(); 
       }); 
      }); 
      $('#btnSubmit').on('click', function(event){ 
       vReqID = $("#reqID").val(); 
       //vStart = $("#dtStart").val(); 
       //vEnd = $("#dtEnd").val(); 
       //alert(vReqID); 
       table.draw(); 
      }); 
     }); 
    </script> 
</body> 
</html> 

在ajax調用的數據元素中,它似乎只適用於靜態數據。我需要能夠動態地將參數發送到我的網址。

data: function(data) { 
    return $.extend({}, data, { 
     "dtStart" : "2/1/2017", //$('#dtStart').val(), 
     "dtEnd" : "2/28/2017", //$('#dtEnd').val(), 
     "reqID" : "451"   //$('#reqID').val() 
    }); 

這是請求,請注意最後3個變量是空的。那些應該包含我的價值觀。

GET /data/get_status.php?draw=1&columns%5B0%5D%5Bdata%5D=0&columns%5B0%5D%5Bname%5D=&columns%5B0%5D%5Bsearchable%5D=true&columns%5B0%5D%5Borderable%5D=true&columns%5B0%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B0%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B1%5D%5Bdata%5D=1&columns%5B1%5D%5Bname%5D=&columns%5B1%5D%5Bsearchable%5D=true&columns%5B1%5D%5Borderable%5D=true&columns%5B1%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B1%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B2%5D%5Bdata%5D=2&columns%5B2%5D%5Bname%5D=&columns%5B2%5D%5Bsearchable%5D=true&columns%5B2%5D%5Borderable%5D=true&columns%5B2%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B2%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B3%5D%5Bdata%5D=3&columns%5B3%5D%5Bname%5D=&columns%5B3%5D%5Bsearchable%5D=true&columns%5B3%5D%5Borderable%5D=true&columns%5B3%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B3%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B4%5D%5Bdata%5D=4&columns%5B4%5D%5Bname%5D=&columns%5B4%5D%5Bsearchable%5D=true&columns%5B4%5D%5Borderable%5D=true&columns%5B4%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B4%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B5%5D%5Bdata%5D=5&columns%5B5%5D%5Bname%5D=&columns%5B5%5D%5Bsearchable%5D=true&columns%5B5%5D%5Borderable%5D=true&columns%5B5%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B5%5D%5Bsearch%5D%5Bregex%5D=false&columns%5B6%5D%5Bdata%5D=6&columns%5B6%5D%5Bname%5D=&columns%5B6%5D%5Bsearchable%5D=true&columns%5B6%5D%5Borderable%5D=true&columns%5B6%5D%5Bsearch%5D%5Bvalue%5D=&columns%5B6%5D%5Bsearch%5D%5Bregex%5D=false&search%5Bregex%5D=false&dtStart=&dtEnd=&reqID=&_=1489602817698 HTTP/1.1 
Host: localhost:8088 
Connection: keep-alive 
Accept: application/json, text/javascript, */*; q=0.01 
X-Requested-With: XMLHttpRequest 
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 
Referer: http://localhost:8088/report_status.php 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 
+0

PHP在哪裏? –

+0

您的表單元素需要名稱。 –

+0

輸入標籤的名稱屬性在哪裏? – Shan

回答

0

doc,你有沒有試過

"ajax": { 
    url: "data/get_status.php", 
    data: function (d) { 
     // merge object d with new object 
     return $.extend({}, d, { 
      dtStart: $("#dtStart").val(), 
      dtEnd: $("#dtEnd").val(), 
      reqID: $("#reqID").val() 
     }); 
    } 
} 

These answers使用類似的方法。

默認情況下,當您點擊一個type="submit"按鈕時,它會將表單數據發送到某處(通常是表單的action屬性中指定的地址)。阻止這種情況發生的一種方法是簡單地將type="submit"更改爲type="button"。這將阻止您的表單在點擊按鈕時提交,因爲您將使用table.draw()來處理它,這將觸發AJAX。

+0

更改爲按鈕類型固定我的代碼。謝謝 –