javascript - AJAX PHP 邮件表单

标签 javascript php jquery ajax forms

我正在尝试制作一个 PHP 邮件表单。我的工作方式如下:

<form method="post" action="PHP/index.php" autocomplete="off">
    <fieldset class="singleLine">
        <input id="name" type="text" name="name" required>
        <label for="name">Full Name</label>
        <div class="after"></div>
    </fieldset>
    <fieldset class="singleLine">
        <input id="email" type="text" name="email" required>
        <label for="email">Email</label>
        <div class="after"></div>
    </fieldset>
    <fieldset class="multiLine">
        <textarea onkeydown="textAreaAdjust(this)" id="message" type="textarea" name="message" required></textarea>
        <label for="message" id="messageTop">Message</label>
        <div class="after"></div>
    </fieldset>
    <fieldset>
        <input id="submit" name="submit" type="submit" value="Submit">
        </fielset>
</form>

这是我的 PHP 文件

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: '; 
    $to = ''; 
    $subject = 'Contact Form';

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";


    if ($_POST['submit']) {
        if (mail ($to, $subject, $body, $from)) { 
            echo '<p>Your message has been sent!</p>';
        } else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
        }
    }
?>

我不喜欢这种方法的是,它会将您发送到一个新页面,其中显示文本消息已发送或出现问题。 我真的很想用弹出窗口/模式来实现。模态不是问题。

Ajax 调用给我带来了一些问题。 我可能需要更改我的 PHP 代码,但不知道如何更改。有人可以帮我吗。我不熟悉 PHP。

这是我的ajax调用和修改后的表单的JS代码

function sendMail() {
    $("#submit").click(function() {
        var name = $("#name").val();
        var email = $("#email").val();
        var text = $("#message").val();
        var dataString = 'name='+ name + '&email=' + email + '&text=' + text;


    $.ajax({
        url: 'PHP/index.php',
        type: 'post',
        data: dataString
    })
        .promise()
        .done(function (data) {
            alert("done");
        });
    });
}

形式:

<form autocomplete="off">
    <fieldset class="singleLine">
        <input id="name" type="text" name="name" required>
        <label for="name">Full Name</label>
        <div class="after"></div>
    </fieldset>
    <fieldset class="singleLine">
        <input id="email" type="text" name="email" required>
        <label for="email">Email</label>
        <div class="after"></div>
    </fieldset>
    <fieldset class="multiLine">
        <textarea onkeydown="textAreaAdjust(this)" id="message" type="textarea" name="message" required></textarea>
        <label for="message" id="messageTop">Message</label>
        <div class="after"></div>
    </fieldset>
    <fieldset>
        <div id="submit" name="submit">Submit</div>
        <!--<input id="submit" name="submit" type="submit" value="Submit">-->
        </fielset>
</form>

最佳答案

为您的表单提供一个类或 ID。

function sendMail() {
    //bind on the submit of the form
    $(".myForm").on('submit', function(e) {
        e.preventDefault(); //cancel the normal form submission

        $.ajax({
            url: 'PHP/index.php',
            method: 'post',
            data: $(this).serialize(), //serialize all the inputs of the form for the ajax request
        }).then(
            function success() {
                console.log(arguments);
                //do stuff
            },
            function error() {
                console.log(arguments);
                //do stuff
            }
        )
    });
}

关于javascript - AJAX PHP 邮件表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44245123/

相关文章:

javascript - javascript ajax 帖子中出现错误

php - 如何使 html 页面在任何浏览器中只能在一定程度上缩放?

php - 记录不会从数据库中删除

JavaScript 检测页面底部在 Chrome 上则相反

javascript - 根据用户文本输入动态加载数据库

javascript - 使用 JQuery 创建一个事件的动态菜单

javascript - 使用 Jquery 或 Javascript 以特定的 JSON 格式转换字符串数组

javascript - 如何在 Apple Instruments 中启用 Javascript 语法检查

php - 检查循环中是否存在 XML 元素

jquery - Bootstrap 面板折叠创建间隙