值没有传递给process.php

时间:2015-04-06 13:24:49

标签: javascript php ajax

下面的脚本有助于处理请求数字和名称值的表单,然后将其发送到process.php并显示确认并隐藏将模式触发到表单的按钮,以便用户无法重试填写形式。

处理传递数据的脚本到process.php

  $(document).ready(function () {

function successHandler(){
    console.log('Success');
    $("#thanks").html(msg);
    $('#form-content').modal('hide');
}

function errorHandler(){
    console.log('Error');
    alert("Error");
}

var nameval = $('#name').val();
var numberval = $('#number').val();

$("form#contact").submit(function(){
    $.ajax({
        type: "POST",
        url: "process.php",
        data: {
            name: nameval,
            number: numberval,
            submit: true 
        },
        success: function(msg){
            $("#thanks").html(msg);
            $('#form-content').modal('hide');
            return false;
        },
        error: function(){
            alert("Error");
            return false;
        }
    });
    return false;
   });
});

整个操作确实会生成一封包含来自process.php脚本的HTML的电子邮件,但不包含从表单中捕获的数据,我相信此脚本中存在错误,因为我在表单或进程中找不到任何内容.php正在使用PHPMail()做错了什么。

你可以帮忙吗?

更新

    <?php
if (isset($_POST['submit'])) {
$name = ($_POST['name']);
$number = ($_POST['number']);
echo "<span class=\"alert alert-success\">THANKS! SUBMITTED</span>";

$to = "EMAIL BLANKED";
$subject = "Alert!";

$message = "name: $name number: $number";

// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
// More headers
$headers .= 'From: <email blank>' . "\r\n";

mail($to,$subject,$message,$headers);
}
 else { echo '<div class="alert alert-error">Error</div>' ; }
?>

1 个答案:

答案 0 :(得分:2)

你应该把这两行:

var nameval = $('#name').val();
var numberval = $('#number').val();
提交函数内的

就像这样

$("form#contact").submit(function(){
var nameval = $('#name').val();
var numberval = $('#number').val();

因为如果在提交表单之前设置变量的值,输入很可能是空的。