0

我正在尝试在 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

函数.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 

但没有发送电子邮件。我不明白代码中有什么问题!

4

2 回答 2

1

问题是您使用了 jQuery.ajax 中不存在的“操作”选项。您只需在 data 选项中将操作传递给 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
于 2013-04-30T11:58:03.290 回答
0

为什么不使用wp_mail功能?

如果它不起作用,也请使用不同的 SMTP 连接。您可以使用 gmail SMTP 进行测试,看看这是否是您使用的 SMTP 的问题。

于 2013-04-30T10:03:58.307 回答