jquery - 使用ajax将表单发布到一个URL然后将表单提交给它的操作

时间:2017-10-25 15:40:03

标签: jquery ajax

我有一个表单并希望它能够在用户提交表单时执行以下操作:

  1. 使用ajax将数据发布到网址。
  2. 等待(1)处的脚本完成执行
  3. 正常提交表单(action参数中的网址。)
  4. 我已经阅读了以下内容并且很难理解它:

    这就是我所拥有的,也是我所尝试过的:

    <form id="contactUsForm" method="post" action="/email.php">
    
        <input type="text" name="firstName" id="firstName">
        <input type="text" name="lastName" id="lastName">
        <input type="text" name="email" id="email">
        <input type="text" name="phone" id="phone">
        <textarea name="comments" id="comments"></textarea>
    
        <input type="submit" id="sendBtn" value="Send">
    
    </form>
    

    所以我开始停止正常提交表单:

    $("form").submit(function(e) {
        e.preventDefault();
    

    这很有效。

    我现在想用ajax将2个字段(firstNamelastName发布到名为curl.php的脚本中。我添加了这个:

    var self = this,
        firstName = $('#firstName').val(),
        lastName = $('#lastName').val()
    
         $.ajax({
             type: "POST",
             url: "/curl.php",
             data: {firstName: firstName, lastName: lastName},
             cache: false
         }).done(function(result) {
             console.log(result);  
             self.submit();
          }).fail(function() {
             alert('error');
          });
    

    我的curl.php脚本包含以下内容 - 它只输出2个字段的POST数据:

    echo 'FirstName: ' . $_POST['firstName'] . '<br>';
    echo 'LastName: ' . $_POST['lastName'] . '<br>';
    

    我原以为这会出现在我的控制台中,因为console.log(result)应该从curl.php输出回复?

    在“网络”标签中,向curl.php发出请求,但没有响应数据。然后表单按预期提交给email.php

    我不清楚我在进行ajax调用方式是否存在问题,但我认为curl.php实际上并不是&#34;整理&# 34;在email.php执行之前?

    请有人给我一些关于我出错的地方的指示。我花了很多时间阅读上述链接和Promises,但我似乎无法理解这一点!

    我理解ajax是异步的。但我不知道如何指导它等待&#34;在执行curl.php之前email.php完成执行。

0 个答案:

没有答案