通过 ajax 提交多个表单

Submit multiple forms via ajax

我有一个 while 循环,可以为事件重复一个表单。我试图使用 运行 mysql 查询表单 ajax 来防止在提交时重定向页面。我想弄清楚如何传递似乎不起作用的数据,因为每个表单都有相同的 class 或 id.

image of the table with submit button for each row 表格

<form action="status_change.php" method="post" class="ajax">
      <div class="form-group"> 
           <input type="hidden" class="form-control"  name="incidentnum" value="' . $row_aincidents['incidentnumber'] . '">
</div>
<div class="form-group"> 
<input type="hidden" class="form-control"  name="unit" value="' . $row_aincidents['unitid'] . '">
 </div>
 <div class="form-group"> 
 <input type="hidden" class="form-control"  name="status" value="3">
 </div>

 <button type="submit" class="btn btn-primary btn-sm">STAMP</button>
 </form>

Java 脚本

      $('form.ajax').on('submit', function () {

          var that = $(this),
                  url = that.attr('action'),
                  type = that.attr('metod'),
                  data = {};

          that.find('[name]').each(function (index, value) {
              var that = $(this),
                      name = that.attr('name'),
                      value = that.val();

              data[name] = value;

          });

          $.ajax({
              url: url,
              type: type,
              data: data,
              success: function(response) {
                  console.log(response);
              }
          });
          return false;
      });

我认为您只是出现了一些错别字和错误。您需要指定方法(并且您在获取该表单属性时遇到了错字)。您还将该方法设置为 type 选项。

jQuery ajax 调用的默认方法是 get,因此如果您希望通过 post 获取任何数据服务器端,则不会。

  $('form.ajax').on('submit', function () {

      var that = $(this),
          url = that.attr('action'),
          type = that.attr('method'),
          data = {};

      that.find('[name]').each(function (index, value) {
          var that = $(this),
              name = that.attr('name'),
              value = that.val();
          data[name] = value;
      });

      $.ajax({
          url: url,
          method: type,
          data: data,
          success: function(response) {
              console.log(response);
          }
      });

      return false;

  });

设置您期望从服务器返回的数据类型也是一个好习惯。 $.ajax 的默认预期数据类型是猜测(jQuery 可以检测到 json、xml、html 和脚本)。您可以使用 dataType 选项指定预期的数据类型。

在同一表单中使用相同名称的输入也不是一个好习惯。在你的情况下,因为你有多种形式,所以这不是问题。

您可以阅读更多关于 $.ajax here