我是一个使用AJAX和PHP开发的菜鸟。
我在Wordpress自定义主题中制作了这个HTML联系表单:
<div class="footer-form">
<form class="footer-form-contact"
name="contact">
<h3 class="anuncio" id="formulario-contacto">Contacta con nosotros</h3>
<input type="text"
placeholder="Nombre"
name="nombre"
id="nombre"
required/>
<input type="email"
name="email"
id="email"
placeholder="Email"/>
<input type="text"
placeholder="Teléfono"
name="telefono"
id="telefono"
required/>
<textarea
name="mensaje"
id="mensaje"
placeholder="Escribe tu mensaje"
required>
</textarea>
<input type="checkbox"
required
name="privacidad"
value="privacidad"/>
<input type="button"
id="enviar"
value="Enviar"
onclick="cargaSendMail()"/>
</form>
<div id="c_information" class="hide">
<p></p>
</div>
然后我按照这个问题File path for AJAX script (in Wordpress)从admin-ajax.php获取url路径,如RRikesh do。
这是functions.js:
function cargaSendMail(){
$("#enviar").attr("disabled", true);
$(".c_error").remove();
var filter=/^[A-Za-z][A-Za-z0-9_]*@[A-Za-z0-9_]+.[A-Za-z0-9_.]+[A-za-z]$/;
var s_email = $('#email').val();
var s_name = $('#nombre').val();
var s_telefono = $('#telefono').val();
var s_msg = $('#mensaje').val();
if (filter.test(s_email)){
sendMail = "true";
} else{
$('#email').after("<span class='c_error' id='c_error_mail'>Ingrese e-mail válido.</span>");
//aplicamos color de borde si el se encontro algun error en el envio
$('.footer-form').css("border-color","#e74c3c");
sendMail = "false";
}
if (s_name.length == 0 ){
$('#nombre').after( "<span class='c_error' id='c_error_name'>Ingrese su nombre.</span>" );
var sendMail = "false";
}
if (s_telefono.length == 0 ){
$('#telefono').after( "<span class='c_error' id='c_error_telefono'>Ingrese su telefono.</span>" );
var sendMail = "false";
}
if (s_msg.length == 0 ){
$('#mensaje').after( "<span class='c_error' id='c_error_msg'>Ingrese mensaje.</span>" );
var sendMail = "false";
}
if(sendMail == "true"){
var datos = {
"nombre" : $('#nombre').val(),
"email" : $('#email').val(),
"telefono" : $('#telefono').val(),
"mensaje" : $('#mensaje').val()
};
$.ajax({
url: ajaxurl,
type: 'POST',
data: datos + '&action=sendcontacto',
beforeSend: function () {
//aplicamos color de borde si el envio es exitoso
$('.footer-form').css("border-color","#25A25A");
$("#enviar").val("Enviando…");
},
success: function (response) {
$('.footer-form-contact')[0].reset();
$("#enviar").val("Enviar");
$("#c_information p").html(response);
$("#c_information").fadeIn('slow');
$("#enviar").removeAttr("disabled");
}
});
} else{
$("#enviar").removeAttr("disabled");
}
}
和我的function.php:
function send_my_contact(){
$mensaje = $_POST['mensaje'];
$mensaje.= "\n----------------------\n";
$mensaje.= "\nDe: ". $_POST['nombre'];
$mensaje.= "\nEmail: ". $_POST['email'];
$mensaje.= "\nTelefono: ". $_POST['telefono'];
$destino = "hola@fiuuu.es";
$remitente = $_POST['email'];
$asunto = "Mensaje enviado desde Talent Institut por ".$_POST['nombre'];
mail($destino,$asunto,$mensaje,"FROM: $remitente");
echo "Mensaje enviado. Gracias por conectarse con nosotros";
}
add_action('wp_ajax_sendcontacto', 'send_my_contact');
add_action('wp_ajax_nopriv_sendcontacto', 'send_my_contact');
一切都好,系统正确地发给我电子邮件,但数据是空的:
----------------------
De:
Email:
Telefono:
我做错了什么?
答案 0 :(得分:0)
我会将您的数据修改为以下内容,以便在datos
中明确设置操作:
var datos = {
"nombre" : $('#nombre').val(),
"email" : $('#email').val(),
"telefono" : $('#telefono').val(),
"mensaje" : $('#mensaje').val(),
"action": 'sendcontacto'
};
$.ajax({
url: ajaxurl,
type: 'POST',
data: datos,