PHP使用AJAX和DataTables发布数据

PHP Post Data with AJAX and DataTables

本文关键字:数据 布数据 使用 AJAX DataTables PHP      更新时间:2023-09-26

在提交表单时,我在服务器端PHP脚本中获取POST数据时遇到了问题。我把它缩小到一点JQuery/JavaScript,它通过AJAX将JSON数据加载到DataTable中。

形式如下:

   <form class="form-horizontal" action="./scripts/lookup.php" method="post" role="form" id="lookupForm">
   <div class ="form-group">
      <label for="inputLookup" class="col-sm-2 control-label">Username</label>
      <div class="col-sm-10">
         <input type="text" class="form-control" id="inputLookup" name="lookup_name" placeholder="John.Doe" required/>
      </div>
   </div>
   <div class="form-group">
      <div class="col-sm-10 col-sm-offset-2">
         <input id="submitUserLookupBtn" name="submitUserLookup" type="submit" value="Lookup" class="btn btn-primary"/>
      </div>
   </div>
</form>

然后是脚本:

$("#lookupForm").submit(function (e) {
 e.preventDefault();
 $.ajax({
     type: 'POST',
     url: './scripts/lookup.php',
     dataType: 'json',
     success: function(s) {
      LUUTable.fnClearTable();
        for(var i = 0; i < s.length; i++) {
           LUUTable.fnAddData([
              s[i][0],
              s[i][1],
              s[i][2],
              s[i][3],
              s[i][4],
              s[i][5],
              s[i][6],
              s[i][7]
           ]);
        }
     },
     error: function(e) {
        if (e.responseText != '') {
           console.log("Error: " + e.responseText);
        } else {
           console.log("Warning: No data to return.");
        }
     }
 });
});

无论何时运行该代码片段,PHP都不会获得POST数据,但是一旦我注释掉脚本,POST数据就会发送到服务器。然而,问题是,这个代码片段是我处理服务器返回的JSON数据的地方。

导致数据无法POST的原因是什么?我如何进一步解决或缓解此问题?

非常感谢!

您将向发送两次数据/script/lookup.php

<form class="form-horizontal" action="./scripts/lookup.php" method="post" role="form" id="lookupForm">

和Ajax脚本中。将以上行更改为

<form class="form-horizontal" role="form" id="lookupForm">

只需保留url,并在javascript中的ajax调用中键入:post。

序列化表单数据并在AJAX中发送值:

$("#lookupForm").submit(function (e) {
 e.preventDefault();
 var formValues = $(this).serialize(); // serialize the form data
 $.ajax({
     type: 'POST',
     url: './scripts/lookup.php',
     data: formValues, // send serailized form data here
     dataType: 'json',