使用jquery' ajax'发送表单数据和html表单' action'

时间:2014-04-22 22:42:14

标签: php jquery ajax forms

我正在尝试在提交后执行以下两个操作的表单:

  1. 调用表单操作并将数据发送到数据库
  2. 还使用jquery ajax
  3. 将此表单数据发送到另一个php文件

    就像使用单个按钮,单个表单

    执行两个操作一样

    这是我的代码:

    tryform.php:

      $(document).ready(function() {
      $("#parentForm").submit(function(e){
      e.preventDefault();
      if (!$('.formSubmitButton').hasClass('submitted'))
        {
          // disable the form to prevent multple clicks
          $('.formSubmitButton').addClass('submitted');
              var $form = $(this);
              var serializedData = $form.serialize();
              request = $.ajax({
               type: "POST",
              url: "postdata.php",
              data: serializedData
          });
    
          request.done(function(data){
              $('.parentForm').submit();
    
              // enable the form
              $('.formSubmitButton').removeClass('submitted');
              console.log("Working");
          });
          request.fail(function(){
              console.error("Error occured");
          });
        }
        return false;
    });
      });
    
    
    <!--My Form-->
    <form id="parentForm" action="thanks.php">
      First Name:<input type="text" id="firstName" name="firstName"/>
      <br/>Last Name:<input type="text" id="lastName" name="lastName"/>
      <br/><input type="submit" id="formSubmitButton" value="submit" />
      </form>
    

    postdata.php:

    $firstname = $_POST['firstName'];
    $lastname = $_POST['lastName'];
    $lastname1 = $lastname . " from postdata";
    
    //$test_query = "INSERT INTO testuser (firstname, lastname) VALUES ('" . $firstname . "', '" . $lastname . "')";
    $test_query1 = "INSERT INTO testuser (firstname, lastname) VALUES ('" . $firstname . "', '" . $lastname1 . "')"; 
    $result_test1 = mysql_query($test_query1) or die(mysql_error());
    

    thanks.php:

    $firstname = $_POST['firstName'];
    $lastname = $_POST['lastName'];
    $test_query = "INSERT INTO testuser (firstname, lastname) VALUES ('" . $firstname . "', '" . $lastname . "')";
    echo $test_query;
    $result_test = mysql_query($test_query) or die(mysql_error());
    

    我现在使用了相同的insert sql语句。表单数据是从postdata.php (使用jQuery ajax)插入的,但不是 thanks.php (使用表单操作)。理想情况下,我希望他们两个都能工作。

1 个答案:

答案 0 :(得分:2)

$('.parentForm').submit()的第二次调用不执行任何操作,因为您阻止了默认操作并返回false。 (因为表单有id,而不是类!)

要避免这种情况,请使用表单的提交方法,而不是再次触发提交事件。

$('#parentForm')[0].submit();

这将导致表单提交而不触发任何提交事件处理程序。

(你现在可以摆脱你提交的类和if语句)


或者,只需将您的e.preventDefault移到if语句中,然后移除return false