空白错误ajax发布到发送电子邮件的php文件

时间:2014-01-24 21:08:13

标签: php ajax

我有一个ajax调用,它将一些数据(名字,姓氏,电子邮件)发送到一个php文件,该文件应该给我发电子邮件。我发送的数据存在,我已经检查过了。当我运行它时,我得到一个空白错误。我错过了一些容易的事吗?有什么建议?

$.ajax({
    type: 'POST',
    url: 'signup.php',
    data: { first_name: 'first_name', last_name: 'last_name', email_address: 'email_address'},
    contentType: 'application/json; charset=utf-8',
    async: false,
    success: (function() {
        alert("Successful");
    }),
    error: (function(data){

    })
});

在signup.php中我有以下内容:

<?php

// Get User Information From AJAX Post
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email_address = $_POST['email_address'];

//Set Email Information
$to = 'example@example.com';
$subject = 'New User';
$message = "New User\n$first_name\n$last_name\n$email_address";
$headers = 'From: example@example.com'. "\r\n";

//Send Email
mail($to, $subject, $message, $headers);

?>

1 个答案:

答案 0 :(得分:2)

你的问题是

  1. 您正在尝试发布JSON(但未成功)
  2. 您尝试发布JSON时尝试阅读已发布的表单数据。
  3. 我建议不发布json,但是普通网址编码表单数据,那样$_POST将填充发送的值。

    如果您在数据字段中传递一个对象,它将为您编码,因此您无需执行'first_name='+encodeURIComponent(first_name)+'&last_name='+encodeURIComponent(last_name)+'&email_address'+encodeURIComponent(email_address)

    $.ajax({
        type: 'POST',
        url: '/signup.php',
        data: {'first_name': first_name, 'last_name': last_name, 'email_address': email_address},
        async: false,
        success: (function() {
            alert("Successful");
        }),
        error: (function(ts){
            alert(ts.responseText);
        })
    });
    

    同样在你的php中你尝试一些字符串插值(将变量放在一个字符串中),但你使用单引号,你必须使用双引号。

    $message = "New User\n$first_name\n$last_name\n$email_address";