CalZone
CalZone

Reputation: 1721

asynchronous email php + jquery

I need to send email asynchronously.

For that I have a jQuery ajax client and PHP backend to actually send eMail, still AJAX's success method is not being called. I understand it is simple, but yet doesn't seem to be working. Can somebody please take a look at my code and see what I'm doing wrong? Really appreciate it.

$.ajax({
    type: "POST",
    url: "mail.php",
    data: {name: "manu", email: "[email protected]"},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {  
        alert('mail sent');  
        $('#divToBeWorkedOn').html(msg);
    }
});

and I have mail.php

<?php

header("Content-type: application/json");
$name = trim($_POST['name']);
echo $name
$email = trim($_POST['email']);

$msg="my email";
$emailTo = '[email protected]';
$subject = 'Contact Form Submission from '.$name;
$sendCopy = trim($_POST['sendCopy']);
$body = "Name: $name \n\nEmail: $email \n\nMessage: $message";
$headers = 'From: Saddi website <'.$emailTo.'>' . "\r\n" . 'Reply-To: ' . $email;

mail($emailTo, $subject, $body, $headers);
echo 1;
?>

Upvotes: 1

Views: 195

Answers (1)

user2443329
user2443329

Reputation: 118

I see 2 problems.

  1. you're echoing just 1, its not JSON. So in your PHP code do json_encode("msg"=>"1");

  2. In my experience, if you have this

header("Content-type: application/json"); OR header("Content-type: json/text");

You won't get any result in jquery success or error blocks.

success: function(msg) {  
    alert(msg);  
}

the msg would return null value (or nothing). The alert will happen but will show something like object object.

Upvotes: 1

Related Questions