Javascript Ajax和发送表单

Javascript Ajax和发送表单,javascript,php,jquery,ajax,email,Javascript,Php,Jquery,Ajax,Email,从我的live站点发送邮件时遇到问题 奇怪的是,当我禁用JavaScript时,邮件被正确发送(我在收件箱中收到) 当我启用JavaScript并尝试使用Ajax发送它时,Ajax返回为成功,因为我会收到我的自定义消息“谢谢你,你的邮件已经发送了”(尽管它从未发送过)。因为我得到了一个成功的返回,所以我必须假设处理脚本运行时没有错误。尽管如此,启用JavaScript后邮件仍不会发送 以下是我的ajax调用: if(success == false) { if(event.pre

从我的live站点发送邮件时遇到问题

奇怪的是,当我禁用JavaScript时,邮件被正确发送(我在收件箱中收到)

当我启用JavaScript并尝试使用Ajax发送它时,Ajax返回为成功,因为我会收到我的自定义消息“谢谢你,你的邮件已经发送了”(尽管它从未发送过)。因为我得到了一个成功的返回,所以我必须假设处理脚本运行时没有错误。尽管如此,启用JavaScript后邮件仍不会发送

以下是我的ajax调用:

if(success == false) {
        if(event.preventDefault) {
            event.preventDefault();
        }
    } else {
        event.preventDefault();

        $.ajax('mailprocess.inc.php', {
            type: "POST",
            data: form.serialize(),
            success: function() {
                var formWrapper  = $('.form-wrapper');
                var confirmMessageSection = $("<section class=\"confirm-message\"></section>");
                formWrapper.empty().append(confirmMessageSection);
                confirmMessageSection.html("<p>Thank you! Your message has been sent.</p>").hide().fadeIn(1500);            
            },
            error: function(request, errorType, errorMessage) {
                var formWrapper = $('.form-wrapper');
                var errorMessageSection = $("<section class=\"email-error\"></section>");
                formWrapper.empty().append(errorMessageSection);
                errorMessageSection.html("<p>Sorry, there was an error.</p><p>Request error type: " + request + "</p><p>Error type: " + errorType + "</p><p>Error Message: " + errorMessage + "</p>").hide().fadeIn(1500);  
            },
            timeout:5000,
            beforeSend: function() {
                //add spinner
                $('.form-wrapper').empty().addClass('is-loading');
            },
            complete: function() {
                //remove spinner
                $('.form-wrapper').removeClass('is-loading');
            }
        });
     }

因此,我将数组移到邮件处理文件中,不再收到该错误。事实上,console.log(data)返回空白。邮件上说它仍然通过Ajax发送,但它仍然不是。你能用以下内容替换成功功能吗:

console.log(form.serialize()) ;
 $.ajax('mailprocess.inc.php', {
        type: "POST",
        data: form.serialize(),
        success: function(data) {
            console.log(data) ;
它将首先在控制台中显示提交的内容,以检查其是否正确,然后在ajax中显示php文件的输出


您收到“谢谢!您的…”消息的事实只意味着您的php文件可以通过ajax调用(没有404或500错误),但您不知道其他任何事情,比如php代码有任何问题。。。否则)

很抱歉,亲爱的,您使用的复杂代码太多,请尝试以下代码:

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<title>Jquery Mail</title>

<script type="text/javascript">
$(document).ready(function(e) {
$('#send').click(function()
{
    $.ajax({
    type:'POST',
    url:"mail.php",
    data:"name="+$('#name').val()+"&email="+$('#email').val()+"&phone="+$('#phone').val()+"",
    async:false,
    success: function(result)
    {
        alert(result);
    }
});
})

   });
</script>
</head>

<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="5" align="center">Mail Form</td>
</tr>
<tr>
<td width="119">&nbsp;</td>
<td width="86">&nbsp;</td>
<td width="246">&nbsp;</td>
<td width="23">&nbsp;</td>
<td width="26">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Name:</td>
<td><input type="text" name="textfield" id="name" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Email</td>
<td><input type="text" name="textfield2" id="email" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Phone:</td>
<td><input type="text" name="textfield3" id="phone" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="button" id="send" value="Send" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>

Jquery邮件
$(文档).ready(函数(e){
$(“#发送”)。单击(函数()
{
$.ajax({
类型:'POST',
url:“mail.php”,
数据:“name=“+$('#name').val()+”&email=“+$('#email').val()+”&phone=“+$('#phone').val()+”,
async:false,
成功:功能(结果)
{
警报(结果);
}
});
})
});
邮寄表格
姓名:
电子邮件
电话:
mail.php

<?php
if(isset($_POST['name']))
{
$name=$_POST['name'];
$email=$_POST['email'];
$phone=$_POST['phone'];

/*

Here You Can Set your mail Function


*/

echo "Entered Name= ".$name.", Entered Email= ".$email.", Entered Phone= ".$phone;
}
?>


啊,好的。日志中有错误。正在我的in_数组方法中获取null。。。但这似乎不对,因为PHP服务器端验证正在工作。它也在发送时禁用了JS。serialize()返回所需的内容。因此,这可能与如何将值传递到脚本有关。为了澄清我的想法:错误是“警告:in_array()希望参数2是数组,在/home/mailprocess.inc.php第36行中给出null”-因此错误在php文件中-但是,当邮件在未启用JS的情况下发送时,这有什么意义?如果是PHP文件问题,则根本不应发送邮件。如果您找到了此问题的答案,请将其添加为此问题的答案(并且仅作为答案)。无需编辑问题以包含答案。
console.log(form.serialize()) ;
 $.ajax('mailprocess.inc.php', {
        type: "POST",
        data: form.serialize(),
        success: function(data) {
            console.log(data) ;
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<title>Jquery Mail</title>

<script type="text/javascript">
$(document).ready(function(e) {
$('#send').click(function()
{
    $.ajax({
    type:'POST',
    url:"mail.php",
    data:"name="+$('#name').val()+"&email="+$('#email').val()+"&phone="+$('#phone').val()+"",
    async:false,
    success: function(result)
    {
        alert(result);
    }
});
})

   });
</script>
</head>

<body>
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td colspan="5" align="center">Mail Form</td>
</tr>
<tr>
<td width="119">&nbsp;</td>
<td width="86">&nbsp;</td>
<td width="246">&nbsp;</td>
<td width="23">&nbsp;</td>
<td width="26">&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Name:</td>
<td><input type="text" name="textfield" id="name" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Email</td>
<td><input type="text" name="textfield2" id="email" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Phone:</td>
<td><input type="text" name="textfield3" id="phone" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="button" id="send" value="Send" /></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table>
</body>
</html>
<?php
if(isset($_POST['name']))
{
$name=$_POST['name'];
$email=$_POST['email'];
$phone=$_POST['phone'];

/*

Here You Can Set your mail Function


*/

echo "Entered Name= ".$name.", Entered Email= ".$email.", Entered Phone= ".$phone;
}
?>