从Wordpress发送AJAX联系表单时清空电子邮件数据

时间:2015-06-17 14:37:30

标签: php jquery ajax wordpress

我是一个使用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:

我做错了什么?

1 个答案:

答案 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,