微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 我似乎无法让我的表单成功发送电子邮件

这是我第一次创建一个结合了AJAX,JavaScript,PHP和HTML的网站.基本上,当你点击里面的表格“联系我”时,我会弹出一个模态.我选择使用AJAX的原因是因为我不希望页面刷新或删除模态.我只是想让它在模态中说出一些简单的东西.

我的问题是,一旦我点击提交,我就不会收到来自表单的电子邮件,当我跟踪从我的服务器发送到我的地址的电子邮件时,他们甚至都没有显示.这不是我第一次构建Web表单或使用PHP / HTML,因此我确信问题必须与AJAX有关.

所以,这就是我所拥有的,我似乎无法弄清楚为什么它不起作用……

PHP

<?PHP
$email_to="[email protected]";
$email_subject="Form Submission";

$name=$_POST['name'];
$email=$_POST['email'];
$message=$_POST['message'];

function clean_string($string)
{
    $bad = array("content-type","bcc:","to:","cc:","href");
    return str_replace($bad,"",$string);
}

$email_message .= "Name: ".clean_string($name)."\n";
$email_message .= "E-Mail Address: ".clean_string($email)."\n";
$email_message .= "Message: ".clean_string($message);

$headers='From: '.$email."\r\n".'Reply-To: '.$email."\r\n".'X-Mailer: PHP/'.PHPversion();
@mail($email_to,$email_subject,$email_message,$headers);
die();
?>

的JavaScript / AJAX:

function submitForm() {
    var request;
    var name = $('#name').val();
    var email = $('#email').val();
    var message = $('#message').val();
    console.log(name);
    console.log(email);
    console.log(message);

    var the_data = "name="+name+"&email="+email+"&message="+message;

    if(window.XMLHttpRequest)
    {
        request = new XMLHttpRequest();
    } else {
        request = new ActiveXObject("Microsoft.XMLHTTP");
    }
    /* My attempt to try some jQuery.... Didn't work either
    $.ajax({
        type: "POST",
        url: "formsubmit.PHP",
        data: { name: $('#name'), email: $('#email'), message: ('#message') }           
            })*/

    request.open("POST","formsubmit.PHP", true);
    request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
    request.send(the_data);
    $('#contactform').fadeOut();
    $('#contactsuccess').fadeIn();
}

还有提交按钮,以防万一是个问题……

<button type="submit" class="btn btn-primary" onClick="submitForm()"><i class="icon-ok icon-white"></i> Submit!</button>

编辑:另外,我在使用相同的代码时遇到了问题,因为它刷新了页面,我确实不希望它这样做.因此,我看不到我的Javascript控制台或任何东西.我假设AJAX会删除刷新,但它没有.我该如何解决这个问题呢?

解决方法:

当您使用jQuery获取输入值时,请使用$.ajax()而不是XMLHttpRequest.您的第一种方法(现在已注释)无效,因为您使用的是对象而不是值($(‘#name’)vs $(‘#name’).val()).

页面将重新加载,因为没有返回值.使用

<button type="submit" class="btn btn-primary" onClick="return submitForm();"><i class="icon-ok icon-white"></i> Submit!</button>

并且还添加return false;在你的功能结束时.

要查看PHP脚本是否存在问题,我建议如下:

>添加error_reporting(E_ALL);在您的文件的开头
>删除邮件功能的@
>在你的JS函数中:

$.ajax({
    [...]
    success: function(msg) {
        alert(msg);
    }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐