基于ID的AJAX表单提交不起作用

时间:2018-07-17 10:04:16

标签: php jquery ajax

好的,我的AJAX表单提交不起作用,我很困惑。在我的代码描述下方。

AJAX代码

<script>
  $(function () {
    $('#addcomp_form').on('submit', function (e) {
      e.preventDefault();
      $.ajax({
        type: 'post',
        url: '../inc/dataforms/addcompany.php',
        data: $('#addcomp_form').serialize(),
        success: function () {
          alert('company form was submitted');
        }
      });

    });

  });
</script>

HTML表格

  <form id="addcomp_form">
      <div class="form-group">
          <input class="form-control" name="name" placeholder="Company Name">
          </input>
      </div>
      <div class="form-group">
          <label>Customer Type :</label>
          <label class="checkbox-inline">
              <input name="type[]" type="checkbox" value="1">
                  Customer
              </input>
          </label>
          <label class="checkbox-inline">
              <input name="type[]" type="checkbox" value="2">
                  Supplier
              </input>
          </label>
      </div>
      <div class="form-group">
          <input class="form-control" name="regno" placeholder="Registration No."></input>
      </div>
      <div class="form-group">
          <input class="form-control" name="vatno" placeholder="VAT Registration No."></input>
      </div>
      <div class="form-group">
          <textarea class="form-control" cols="5" name="regaddress" placeholder="Registered Office Address" rows="4"></textarea>
      </div>
      <button class="btn btn-primary" type="submit">Add Branch</button>
  </form>

PHP代码

 include('../config.php');
 $types = implode(":",$_POST['type']);
 mysqli_query($dbc,"INSERT INTO `comp_companies` (company_id,company_name,company_type,registration_no,vat_number,registered_office_address) VALUES (,'$_POST[name]','$types','$_POST[regno]','$_POST[vatno]','$_POST[regaddress]')");

如果任何人都可以提供任何帮助,将不胜感激

4 个答案:

答案 0 :(得分:0)

仔细检查

(,'$_POST[name]',...

这可能是您的问题所在,请确保在“可能丢失的帖子”字段中取出逗号或文件,这可能是公司ID

您还可以通过将错误ajax函数添加到ajax代码中以在console.log()中打印出错误来进行Extra Debug

$(function () {
   $('#addcomp_form').on('submit', function (e) {
   e.preventDefault();
   $.ajax({
     type: 'post',
     url: '../inc/dataforms/addcompany.php',
     data: $('#addcomp_form').serialize(),
     success: function () {
       alert('company form was submitted');
     },
     error: function(jqXHR, exception) {
       var message;
       if (jqXHR.status === 0) {
         message = 'Not connect.\n Verify Network.';
       } else if (jqXHR.status == 404) {
         message = 'Requested page not found. [404]';
       } else if (jqXHR.status == 500) {
         message = 'Internal Server Error [500].';
       } else if (exception === 'parsererror') {
         message = 'Requested JSON parse failed.';
       } else if (exception === 'timeout') {
         message = 'Time out error.';
       } else if (exception === 'abort') {
         message = 'Ajax request aborted.';
       } else {
         message = 'Uncaught Error.\n' + jqXHR.responseText;
       }
       console.log(message);
     }
   });
  });

});

答案 1 :(得分:0)

它是``not a''(在sql查询中)

答案 2 :(得分:0)

尝试一下。

<script>
      $(function () {
        $(document).on("submit", "#addcomp_form", function (e) {
          $.ajax({
            type: 'post',
            url: '../inc/dataforms/addcompany.php',
            data: $('#addcomp_form').serialize(),
            success: function () {
              alert('company form was submitted');
            }
          });
          return false;
        });
      });
    </script>

答案 3 :(得分:0)

您正在为特定ID创建一个提交事件,并且不能有多个具有相同ID的表单。

您可以选择:

$(SELECTOR).submit( function (e) {
//your logic
});

或者可以尝试:

$(document).on("EVENT", "SELECTOR", function (e) {
//your logic
});

查询应如下所示:

 mysqli_query($dbc,"INSERT INTO `comp_companies` (company_id,company_name,company_type,registration_no,vat_number,registered_office_address) VALUES (".$_POST[name].",".$types.",".$_POST[regno].",".$_POST[vatno].",".$_POST[regaddress].")");

如果您有字符串类型的数据,请使用单引号引起来:

('".$_POST[name]."')

如果是整数数据:

(".$_POST[name].")