Enviar variables desde Ajax a PHP

Iniciado por ANTRAX, Febrero 05, 2020, 10:22:15 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 05, 2020, 10:22:15 PM Ultima modificación: Febrero 06, 2020, 06:10:56 PM por Gabriela
Estuve mirando por todo Stackoverflow, pero no encuentro forma de que funcione mi código.
Básicamente es un formulario de contacto y quiero enviar las variables a un PHP por medio de ajax.

Javascript

Código: javascript
<script>

    $('#template-contactform-submit').click(function(){

        var email = $('#template-contactform-email').val();
        var nombre = $('#template-contactform-name').val();
        var telefono = $('#template-contactform-phone').val();
        var mensaje = $('#template-contactform-message').val();
        var asunto = $('#template-contactform-subject').val();
        var datos = 'email=' + email + '&nombre=' + nombre + '&telefono=' + telefono + '&mensaje=' + mensaje + '&asunto=' + asunto;

        $.ajax({
            url: 'include/contact-form.php',
            type: 'POST',
            data: datos
        })

        .done(function(res){
            $('#respuesta3').html(res)
        })

        .fail(function(fail_resp){
            Swal.fire({
                title: 'Error!',
                text: 'No se ha podido realizar la suscripción. Intentelo nuevamente más tarde..',
                icon: 'error',
                confirmButtonText: 'Cerrar'
                })
        })

    });

</script>


y acá el PHP que lo recibe

Código: php
$nombre = $_POST['nombre'];
$email = $_POST['email'];
$telefono = $_POST['telefono'];
$asunto = $_POST['asunto'];
$mensaje = $_POST['mensaje'];


El error que recibo es un error 500

Espero que puedan ayudarme!
ANTRAX


Febrero 05, 2020, 11:01:12 PM #1 Ultima modificación: Febrero 05, 2020, 11:02:44 PM por DtxdF
Lo más probable es que sea por dos inconvenientes; el primero puede ser que no esté recibiendo por alguna u otra razón que desconocemos algunos o todos los datos POST, verifique eso; el segundo puede tener que ver con el primero pero también puede ser por un error en algún fichero que está incluyendo y no tenga "display_errors" en "On" en el fichero "php.ini" para que se le muestre los errores. No seria conveniente cambiar ese valor en el servidor de producción, es preferible que si tiene la posibilidad montar tal cual en su propia computadora los ficheros cómo lo tiene en su hosting/vps/servidor/etc.

Otra cosa es debuggear con el mismo mini servidor de php "php -S 0.0.0.0:8080".

ACTUALIZO:

Oh, me falto decir que trate de verificar el .htaccess, si puede eliminelo temporalmente o cambiele el nombre temporalmente, ejecute el script nuevamente haber si sucede algo esperado.

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Si, todo eso esta bien, porque tengo otro formulario que es el clásico de suscripción en donde solo pones el mail y funciona bien.
El problema viene cuando tengo que enviar varias variables.

Saludos y gracias por responder!
ANTRAX


Bien, creo que podemos descartar los problemas que mencione.

Por ahora se me ocurre que puede usar la vieja confiable, "var_dump( )", convertirlo a un json y guardarlo en un archivo para leerlo a posteriori.

El estado 500 es un error del servidor, vea los logs en caso de que tenga la posibilidad.

Pruebe con un objeto en vez de un string (No creo que tenga relevancia, pero a veces en la incertidumbre es mejor probar de todo).

PD: Actualizaré este comentario cada vez que se me ocurra algo, espero alguien de la comunidad pueda apoyarlo.

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Estuve tratando de emular la situación tan peculiar que se está enfrentando.

Simplemente envié datos a el mismo php que usted tiene, claro qué funciono porque literalmente es lo único que hacia.

Debere seguir insistiendo en que tiene un error en algún archivo que incluye, puede ser que esté usando una versión diferente de php en el servidor, puede ser por culpa del archivo php.ini, un error en el .htaccess, o mil motivos por qué sólo son conjeturas.

Tiene que tratar de emular el servidor de alojamiento, desde su máquina si es posible.

Espero que alguien también desee ayudarlo.

~ DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

Por fin, qué era?

No le ví error.
Tampoco soy developer web (suelo delegar estos asuntos)... pero con mis nociones, no le veo el problema.

Se me ha quedado la curiosidad y la duda, pues pudiera serme útil.
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

prueba esto:

Código: javascript
$('#template-contactform-submit').click(function () {
    $.ajax({
        data: {
            "email": $('#template-contactform-email').val(),
            "nombre": $('#template-contactform-name').val(),
            "telefono": $('#template-contactform-phone').val(),
            "mensaje": $('#template-contactform-message').val(),
            "asunto": $('#template-contactform-subject').val()
        },
        url: "include/contact-form.php",
        type: "POST",
        cache: false,
        dataType: "html",
        contentType: "application/x-www-form-urlencoded",
        beforeSend: function () {
            $('.message').html('algo');
        },
        success: function (respuesta) {
            $('#respuesta3').html(respuesta)
        }
    });
    return false;
});


Código: php
    
    $nombre = $_REQUEST['nombre'];
    $email = $_REQUEST['email'];
    $telefono = $_REQUEST['telefono'];
    $asunto = $_REQUEST['asunto'];
    $mensaje = $_REQUEST['mensaje'];


Saludos