代码之家  ›  专栏  ›  技术社区  ›  eozzy

Ajax表单不工作(jQuery-PHP)

  •  0
  • eozzy  · 技术社区  · 14 年前

    查询:

    $("#contact-us-form").submit(function () {
        var nameVal = $("input[name=name]").val();
        var companyVal = $("input[name=company]").val();
        var titleVal = $("input[name=title]").val();
        var emailVal = $("input[name=email]").val();
        var phoneVal = $("input[name=phone]").val();
        var messageVal = $("input[name=message]").val();
        $.post("mailer.php", {
            name: nameVal,
            company: companyVal,
            title: titleVal,
            email: emailVal,
            phone: phoneVal,
            message: messageVal
        }, function (data) {
            alert("Data Loaded: " + data);
            $('#thanks').show();
        });
        return false;
    });
    

    <?php
    
    if(isset($_POST['submit'])) {
    
        $to = "admin@domain.com";
        $subject = "Inquiry";
        $name = $_POST['name'];
        $company = $_POST['company'];
        $title = $_POST['title'];
        $email = $_POST['email'];
        $phone = $_POST['phone'];
        $message = $_POST['message'];
    
        $body = <<<HEREDOC
            From: $name
            Company: $company
            Title: $title 
            E-Mail: $email
            Phone: $phone \n
            Message: $message 
    HEREDOC;
    
        echo 'success';
        mail($to, $subject, $body);
    
    } else {
        echo "failure";
    }
    
    ?>
    

    页面上的数据警报返回 failure ,我不明白为什么!

    3 回复  |  直到 14 年前
        1
  •  4
  •   Nick Craver    14 年前

    两件事,首先主要的问题是 submit 您传递的变量(如果有提交按钮,则为 .serialize() 序列化 <form>

    $("#contact-us-form").submit(function () {
      $.post("mailer.php", $(this).serialize(), function (data) {
        alert("Data Loaded: " + data);
        $('#thanks').show();
      });
      return false;
    });
    

    添加 变量在那里,只要使用 .serializeArray() 并将其添加到中,执行以下操作:

    $("#contact-us-form").submit(function () {
      var fdata = $(this).serializeArray();
      fdata.push({ name: 'submit', value: true });
      $.post("mailer.php", fdata, function (data) {
        alert("Data Loaded: " + data);
        $('#thanks').show();
      });
      return false;
    });
    
        2
  •  0
  •   Bobby Jack    14 年前

    在我看来,您好像没有向mailer.php发送“submit”值,所以您的条件失败了。

        3
  •  0
  •   PHPology    14 年前

    查看通过JS传递到mail.php中的数据,您还没有传入“submit”,这是您基于条件的地方。

    我建议您输入如下内容:

        $.post("mailer.php", { 
                name: nameVal, 
                company: companyVal, 
                title: titleVal, 
                email: emailVal, 
                phone: phoneVal, 
                message: messageVal,
    action: "send-email"
            }, function (data) { 
                alert("Data Loaded: " + data); 
                $('#thanks').show(); 
            });
    

    在PHP中,将条件更改为:

    if($_POST['action'] == "send-email") {