2014-01-24 69 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