我一直在努力获取数据,以便在我正在处理的网站上的大型工作查询表单上发送。WordPress Ajax和PHP电子邮件问题 - 电子邮件中没有数据
快速用户案例:
作为网站所有者我想有用户通过复选框提交的数据和一些输入一些个人信息。当点击提交按钮时,我想通过Ajax发送数据,并提交给使用AJAX功能的WordPress。这些数据需要通过电子邮件发回给我。
我在哪里
我已经AJAX提交和电子邮件传送发生。我被难倒的原因是我的表单/ ajax请求中没有数据。
HTML
<form id="inquire" class="form" name="inquireForm">
... a crap ton of checkboxes and a few inputs for name,email etc...
</form>
的JavaScript
了以下功能是通过jQuery验证库解雇。有一个submitHandler方法在其中调用follow。
function submitForm() {
/* Keep form from submitting normally*/
event.preventDefault();
/* Clear success div*/
$('.success_box').addClass('hidden').removeClass('error').html('');
var cleanData = $('#inquire').serialize();
var form = cleanData;
$.ajax({
url: myInquiry.ajaxurl,
type: "POST",
data: {
action: "send_inquiry",
form: form,
nonce: myInquiry.nonce
},
dataType: 'JSON',
success: function(data, textStatus, jqXHR) {
console.log(' The sever responded: ', data , textStatus , jqXHR);
if (textStatus == "success") {
$('.success_box').removeClass('hidden').html('<p>Success! Your message has been sent. We will reach you to you in less than 24 hours.</p>');
fadeModal();
} else {
$('.success_box').removeClass('hidden').addClass('error').html('<p>Error! Your message has not been sent.</p>');
}
},
});
}
的functions.php
// enqueue ajax scripts
wp_enqueue_script('ajax_script', get_template_directory_uri(). '/assets/js/dist/inquire.js', array('jquery'), null, true);
wp_localize_script('ajax_script', 'myInquiry',
array(
'ajaxurl' => admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce("send_inquiry_nonce"),
)
);
// add in WP actions with unique names that match
add_action('wp_ajax_send_inquiry', 'send_inquiry_process');
add_action('wp_ajax_nopriv_send_inquiry', 'send_inquiry_process');
// Try to send email
function send_inquiry_process() {
$user_email = isset($_POST['email']) ? $_POST['email'] : '';
$headers = "From: " . " $user_email" . "\r\n";
$headers .= "Reply-to: ". $user_email . "\r\n";
$headers .= "MIME-Version: 1.0". "\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8" . "\r\n";
$to = "[email protected]";
$subject = "New Inquiry!";
$message = "It works";
mail($to, $subject, $message, $headers);
}
结果
这样做的结果到目前为止是一个坚实的Ajax发帖,我收到一封电子邮件,但$user_email
PHP变量例如返回undefined。这表示我试图返回的所有数据都是零。
我的登台服务器位于Digital Ocean上。它似乎在PHP的邮件方法的作品,但我不是100%确定,如果它的服务器问题或在这一点上。
很高兴富人
我希望返回的数据可以被格式化为HTML。我只需要编写一个表并包含邮件消息的变量。在此之前,我需要它的工作!我现在有UTF-8的字符集,所以我假设所有的都是好的。
ALSO
我知道有巨大的安全漏洞全都在这。我将重点关注这一点,但它需要再次努力。
你可以提供的任何洞察力将使我的一天!我非常强调。谢谢!
我没有看到你访问'form'的$ _POST'键,你的Ajax中的'data'是php中的'$ _POST',所以'$ _POST ['action']'是'data.action' 。 'data.email'不存在。也许'data.form.email'确实是'$ _POST ['form'] ['email']' - 有意义吗? – ArtisticPhoenix