0

次のコードを使用して、検証 (jQuery Validate プラグイン) を使用して、Wordpress で単純な Ajax 連絡先フォームを作成しようとしています。

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 に答える