WordpressのネイティブのPHPMailerクラスとAjaxを使用して連絡先情報を電子メールで送信しようとしています。ここに関連するコードです:PHPがjQueryのserialize()からデータを取得できません
jQuery(document).ready(function() {
jQuery('#formContato').submit(ajaxSubmit);
function ajaxSubmit() {
var newCustomerForm = jQuery('#formContato').serialize();
jQuery.ajax({
type: "POST",
url: "<?php echo site_url(); ?>/wp-admin/admin-ajax.php",
data: {
action: 'sendmail',
newCustomerForm
},
success: function(data) {
jQuery("#alertaOk").show();
console.log(data);
console.log(newCustomerForm);
},
error: function(errorThrown) {
jQuery("#alertaErro").show();
console.log(errorThrown);
}
});
return false;
}
});
#alertaOk {
display: none;
}
#alertaErro {
display: none;
}
<form id="formContato" method="post">
<div class="row">
<div class="col-sm-6 form-group">
<input class="form-control" id="name" name="name" placeholder="Nome" type="text" required>
</div>
<div class="col-sm-6 form-group">
<input class="form-control" id="email" name="email" placeholder="E-mail" type="email" required>
</div>
</div>
<textarea class="form-control" id="comments" name="comments" placeholder="Mensagem" rows="5"></textarea><br>
<div class="row">
<div class="col-sm-12 form-group">
<button class="btn btn-default pull-left btn-laranja" type="submit">Enviar</button>
</div>
</div>
<div id="alertaOk" class="alert alert-success">
<strong>Obrigado!</strong> Recebemos sua mensagem e entraremos em contato em breve.
</div>
<div id="alertaErro" class="alert alert-danger">
<strong>Algo deu errado.</strong> Nossos administradores já foram avisados, por favor envie sua mensagem para o e-mail <a href="[email protected]">[email protected]</a> .
</div>
</form>
はアヤックスphpmailerのを呼び出すのWordpressののfunctions.phpファイル内の関数にデータを送信します。 phpmailerのを初期化する前に私はこのようなAjaxデータ取得しています:
$nome = trim($_POST['name']);
$mensagem = trim($_POST['comments']);
$email = trim($_POST['email']);
をして、電子メールの本文にそれを印刷しようとしている:
$mail->Body = "Nome: " . $nome . "\nE-mail: " . $email . "\nMensagem: " . $mensagem;
PHPは、私がテストメールを受信、ちょうど右の機能を実行しますしかし、それはAjax呼び出しからデータを受け取っていません。コンソールにシリアル化されたデータが表示されています。これは間違っていないことを意味しますが、何とかPHPスクリプトに到達していません。私はそれがWordpressに関連するものと思われる。
ありがとうございます。
シリアル化されたデータに名前を付ける必要はありませんか?アクション: 'sendmail'、newCustomerForm:newCustomerForm –
@FunkDocいいえ... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#New_notations_in_ECMAScript_2015 – chiliNUT