[英]Form using jQuery AJAX PHP does not send field input in email
我有這個聯系表單,我正在嘗試使用jQuery / AJAX和PHP將字段輸入值通過電子郵件發送給我。 嗯,電子郵件發送給我很好,但沒有任何字段輸入。 電子郵件只是PHP mail()函數的$ to和$ subject。 請參閱下面的代碼。 任何想法,批評或建議都是受歡迎的。 謝謝你的幫助!
$(document).ready(function() {
$(function() {
// Get the form.
var form = $('#ajax-contact');
// Get the messages div.
//var formMessages = $('#form-messages');
// Set up an event listener for the contact form.
$("button").click(function(e) {
// Stop the browser from submitting the form.
e.preventDefault(e);
// Serialize the form data.
var formData = $(form).serialize();
// Submit the form using AJAX.
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData,
success: function(result){
$('#contact-name').val('');
$('#contact-email').val('');
$('#contact-website').val('');
$('#contact-message').val('');
},
error: function(xhr,status,error){
}
});
});
});
});
<?php
require_once 'swiftmailer/lib/swift_required.php';
//Swift Mailer script
$filter = FILTER_SANITIZE_STRING;
//Grab POST Data
$name = filter_var($_POST['contact-name'], $filter);
$email = filter_var($_POST['contact-email'], FILTER_SANITIZE_EMAIL);
$website = filter_var($_POST['contact-website'], FILTER_SANITIZE_URL);
$message = filter_var($_POST['contact-message'], $filter);
//Create email body
$body = "Name: " . $name . "<br />" . "Email: " . $email . "<br />" . "Website: " . $website . "<br />" . "Message: " . $message;
//Create Transport
$transport = Swift_SmtpTransport::newInstance("host", "port", "security")
->setUsername("username")
->setPassword("password");
//Create Mailer
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance('New Form')
->setFrom(array("email" => "Lead from Contact form"))
->setTo(array('email', 'email' => 'Recipients'))
->setSubject('You have a new message!')
->setBody($body, 'text/html');
//Send Message
$result = $mailer->send($message);
if ($result) {
//設置200(好的)響應代碼。 // http_response_code(200); echo“謝謝!您的郵件已發送。”; } else {//設置500(內部服務器錯誤)響應代碼。 // http_response_code(500); 回聲“哎呀!出了點問題,我們無法發送你的消息。”; }
?>
使用val()
函數從輸入中獲取數據
$(document).ready(function(e) {
$("button").click(function(e) {
e.preventDefault();
var ajax = {
isSubmitting: false,
send: function() {
if(ajax.isSubmitting == false) {
ajax.isSubmitting = true;
var userName = $('input[name="contact-name"]').val();
var userEmail = $('input[name="contact-email"]').val();
var userWebsite = $('input[name="contact-website"]').val();
var userMessage = $('input[name="contact-message"]').val();
if(userName === "" || userEmail === "" || userWebsite === "" || userMessage === "") {
alert("Please fill out all required fields.");
}
else {
$.post("mailer3.php", {
name: userName,
email: userEmail,
website: userWebsite,
message: userMessage
}, function(data) {
ajax.isSubmitting = false;
});
}
}
else alert("Send only 1 email at a time.");
}
}
});
使用$ .ajax試試這個:
$("button").click(function(){
isSubmitting: false;
var userName = $('input[name="contact-name"]').val();
var userEmail = $('input[name="contact-email"]').val();
var userWebsite = $('input[name="contact-website"]').val();
var userMessage = $('input[name="contact-message"]').val();
if(isSubmitting == false) {
$.ajax({url: "mailer3.php",
type:'POST',
data:{
name: userName,
email: userEmail,
website: userWebsite,
message: userMessage
},
success: function(result){
isSubmitting == true;
},error(xhr,status,error){
isSubmitting == false;
}
});
}
});
因為你沒有使用jQquery val(); 檢索輸入值的方法whioch是你無法獲得價值的原因。 使用鏈式方法val()和調用元素,如下所示
`$(document).ready(function(e){//e.preventDefault(); $(“button”)。click(function(e){
var ajax = {
isSubmitting: false,
send: function() {
if(ajax.isSubmitting == false) {
ajax.isSubmitting = true;
var userName = $("input[name=contact-name]").val();
var userEmail = $("input[name=contact-email]").val();
var userWebsite = $("input[name=contact-website]").val();
var userMessage = $("input[name=contact-message]").val();
if(userName === "" || userEmail === "" || userWebsite === "" || userMessage === "") {
alert("Please fill out all required fields.");
}
else {
$.post("mailer3.php", {
name: userName,
email: userEmail,
website: userWebsite,
message: userMessage
}, function(data) {
ajax.isSubmitting = false;
});
}
}
else alert("Send only 1 email at a time.");
}
} `
我最終搞清楚了。 我修改后的代碼位於頂部,是我用來獲取帶有數據的電子郵件。 使用SwiftMailer。 只需完成一些事情。 感謝大家對此的投入!
安德魯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.