我正在尝试在Wordpress中构建一个简单的Ajax联系表单,并使用以下代码进行验证(jQuery Validate插件):
HTML
<script type="text/javascript">
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
</script>
的js
$("#form").validate({ //jquery validate plugin
... // rules
submitHandler: function(form) {
var data = $('form').serialize();
$.ajax({
url: ajaxurl,
type: "POST",
data: data,
cache: false,
action: 'sendmail',
success: function (html) {
... // succesful message
}
});
return false;
} // end submitHandler
}); // end Validate
function.php
function send_my_mail(){
... //sends email
}
add_action('wp_ajax_sendmail', 'send_my_mail');
add_action('wp_ajax_nopriv_sendmail', 'send_my_mail');
当我提交表单时,浏览器控制台会检索此ok消息:
POST http://www.domain.com/wp-admin/admin-ajax.php 200 OK 3.45s
但未发送电子邮件。我没有在代码中得到什么错误!
答案 0 :(得分:1)
问题是你使用了jQuery.ajax中不存在的“action”选项。您只需要在数据选项中将操作传递给WP,如下所示:
$("#form").validate({ //jquery validate plugin
... // rules
submitHandler: function(form) {
var data = $('form').serialize();
$.ajax({
url: ajaxurl,
type: "POST",
data: data + '&action=sendmail',
cache: false,
success: function (html) {
... // succesful message
}
});
return false;
} // end submitHandler
}); // end Validate
答案 1 :(得分:0)
为什么不使用wp_mail功能?
如果不起作用,也可以使用其他SMTP连接。您可以使用gmail SMTP进行测试,以查看您使用的SMTP是否存在问题。