I’m trying to send a form using AJAX and a php script but I keep getting a 500 error. Dev tools takes me to this line in jQuery -
xhr.send( options.hasContent && options.data || null );
I’m seeing that this could be a cross-domain request issue but I’m not seeing a reason why, any ideas?
$(function() {
$(".button").click(function() {
var message = $("textarea#message").val();
var email = $("input#email").val();
var name = $("input#name").val();
var dataString = 'name='+ name + '&email=' + email + '&message=' + message;
$.ajax({
type: 'POST',
url: "contact.php",
data: dataString,
success: function() {
$('#form').html("<div id='thanks-message'></div>");
$('#thanks-message').html("<h2>Thank You!</h2>")
.append("<p>I'll be in touch soon.</p>")
.hide()
.fadeIn(1500);
}
});
return false;
});
<?php
$to_email = "hello@email.com";
$name = $_POST["name"];
$email = $_POST["email"];
$message = $_POST["message"];
$subject = "[Contact Form] " . $_POST["subject"];
function isValidEmail($email) {
return strpos($email, "@") !== false;
}
if($name != "" && $email != "" && $message != "" && isValidEmail($email)) {
$full_message = "Name : ". $name . "\n";
$full_message .= "Email : ". $email . "\n";
$full_message .= "Message :\n\n". $message . "\n"
mail($to_email, $subject, $full_message);
header("Location: contact.html");
exit();
}
die("Your data is invalid.");
?>
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
it outputs
PHP Notice: Undefined index: - for the name, email, message
PHP Parse error: syntax error, unexpected ‘mail’ (T_STRING)
Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.
Full documentation for every DigitalOcean product.
The Wave has everything you need to know about building a business, from raising funding to marketing your product.
Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.
New accounts only. By submitting your email you agree to our Privacy Policy
Scale up as you grow — whether you're running one virtual machine or ten thousand.
Sign up and get $200 in credit for your first 60 days with DigitalOcean.*
*This promotional offer applies to new accounts only.