javascript - 表单提交和 Ajax 同时使用 onsubmit?

标签 javascript php jquery ajax forms

如果之前有人问过这个问题,我很抱歉,但我需要发送我的表单数据,同时发送表单提交和单击提交时触发的 ajax 调用。原因是因为用户被重定向了,我想预先将 det formdata 存储到我的数据库中。

所以我尝试使用提交表单数据的 javascript 函数的表单提交和触发。 这不起作用,发送了表单并且没有进行 ajax 调用。因此,我尝试将 ajax 调用从函数中取出,然后查看它是否有效,并且确实有效,在页面刷新时进行了 ajax 调用并更新了我的数据库。

这里是som代码:

HTML

<form id="danlevi" onsubmit="return senddata()" action='<?php echo esc_url( get_option( 'shopping_cart_url' ) ); ?>' method='post' enctype="multipart/form-data">
  <input type="text" name="first" />
  <input type="text" name="last" />
  <input type="text" name="e-mail" />
  <input type="text" name="phone" />
  <input type="text" name="street" />
  <input type="text" name="zip" />
  <input type="submit" value="send" />
</form>

JavaScript

jQuery(document).ready(function() {
  function senddata() {
    var formdata = jQuery("#danlevi").serialize();
    var decoded = decodeURIComponent(formdata);
    strip = decoded.replace(/[\[\]]/g, "_");
    alert(strip);
    jQuery.ajax({
      type: "POST",
      url: 'dev/wp-content/themes/twentythirteen/custom/process_address.php',
      data: strip,
    });
  }
});

我不知道为什么这不起作用,我想要的是让页面等到 ajax 调用完成,完成后,照常发送表单。

如果我使用 return false,它会起作用。我希望有人能解释我明显做错了什么,并告诉我这样做的方法。您在此代码中看到的警报仅用于调试。

最佳答案

等待 ajax 完成然后提交表单。

   jQuery(document).ready(function() {
      function senddata() {
        var formdata = jQuery("#danlevi").serialize();
        var decoded = decodeURIComponent(formdata);
        strip = decoded.replace(/[\[\]]/g, "_");
        alert(strip);
        jQuery.ajax({
          type: "GET",
          url: 'dev/wp-content/themes/twentythirteen/custom/process_address.php',
          data: strip,
          complete: function(){
              jQuery("#danlevi").submit(); //submit the form after ajax completes
          }
        });
        return false; //stop the form from initially submitting
      }
    });

关于javascript - 表单提交和 Ajax 同时使用 onsubmit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19129463/

相关文章:

javascript - 使用 jqueryeach 循环而不是 td : nth child(3)

javascript - 如何将 span 包裹在一段 HTML 中?

javascript - 如何在 CSS 中向下移动剪贴蒙版?

php - laravel 中的事件和观察者

javascript - 印地语内容不通过 JQuery 显示

javascript - jQuery/Javascript 函数执行

javascript - 现在JS错误!我无法让这个例子工作!

javascript - Ajax 调用和 Windows 身份验证无法正常工作

php - 如何使用其他数据库作为引用从mysql数据库检索用户数?

php - RecursiveIteratorIterator 在 PHP 中是如何工作的?