【问题标题】:Send form data using jquery 'ajax' and html form 'action'使用 jquery 'ajax' 和 html 表单 'action' 发送表单数据
【发布时间】:2014-06-07 12:53:34
【问题描述】:

我正在尝试在提交后为以下两个操作实现我的表单:

  1. 调用表单操作并将数据发送到数据库
  2. 还可以使用 jquery ajax 将此表单数据发送到另一个 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());

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

【问题讨论】:

    标签: php jquery ajax forms


    【解决方案1】:

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

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

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

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

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


    或者,只需将 e.preventDefault 移动到 if 语句中并删除 return false。

    【讨论】:

    • 1.我尝试使用$('.parentForm')[0].submit();,但我得到“无法读取未定义的属性'提交'”,尽管数据仅从“postdata.php”发布。 2. 我在 if 语句中移动了 e.preventDefault 并删除了 return false 但它仍然会这样做。 (只有 postdata.php 有效)
    • 1.这意味着您的选择器不适合您的表单,并且会解释为什么您的原始代码不起作用。 . 应该是 #。更新答案:)
    猜你喜欢
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 1970-01-01
    • 2011-08-09
    • 1970-01-01
    • 2020-03-26
    相关资源
    最近更新 更多