2014-01-24 92 views
1

我有一个ajax调用,发送一些数据(名字,姓氏,电子邮件)到一个PHP文件,应该给我发电子邮件。我发送的数据存在,我检查过。当我运行它但我收到一个空白的错误。我错过了一些容易吗?有什么建议?空白错误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 = '[email protected]'; 
$subject = 'New User'; 
$message = "New User\n$first_name\n$last_name\n$email_address"; 
$headers = 'From: [email protected]'. "\r\n"; 

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

?> 

回答

2

你的问题是

  1. 您尝试发布JSON(但没有成功)
  2. 你尽管您试图发布JSON,但试图阅读发布的表单数据。

我建议不要发布json,但正常的url编码形式的数据,这样$_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"; 
+0

电子邮件发送,但它不会把我的变量...甚至当我把变量的硬编码值 – user3147424

+0

@ user3147424看到更新 – Musa

+0

您的更新适用于硬编码数据。当我在ajax调用之前在javascript中发出警报时,我的POST数据出现问题,我的变量都有值...但是当我到达PHP时? – user3147424