【发布时间】:2013-08-12 18:49:06
【问题描述】:
我正在尝试在 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
但没有发送电子邮件。我不明白代码有什么问题!
【问题讨论】:
-
你不会跨域吧?也许您应该发布实际的 send_my_mail 代码。
-
"action" 不是 jquery ajax 选项,因此删除 action: 'sendmail' 并将其添加到您的数据中: data.action = 'sendmail' (或添加一个名为 action 的隐藏字段,其值为 "发送邮件”到您的表单)
-
@RafH:不,尝试用
data: data.action = 'sendmail',代替data: data,,但它是一样的 -
@FredK 尝试发送不带 if 语句的邮件。看看现在是否可行。
-
只需在表单中添加一个名为“action”且值为“sendmail”的隐藏字段或将
data: data修改为data: data + '&action=sendmail'