Problema con petición Jquery/Ajax

X

xcodex

Hola!, si vien entiendo que usar Ajax puede resultar algo antiguo, eso no quieta que se pueda utilizar :p

Tengo el siguiente formulario:
HTML:
<form id="form_contacto" class="form-general padding-20" method="POST">
                    <input placeholder="Nombre" id="nombre_usuario" type="text" name="nombre_usuario">
                    <button id="enviar-formulario">Enviar</button>
                <div id="respuesta"></div>
            </form>


JavaScript:
<script>
                $('#enviar-formulario').click(function() {
                    $.ajax({
                        url: 'formulario-contacto.php',
                        type: 'POST',
                        data: $('#form_contacto').serialize(),
                        success: function(res) {
                            $('#respuesta').html(res);
                        }
                    });
                });
            </script>

Ye en el archivo formulario-contacto.php puse lo siguiente solo a modo de prueba:
PHP:
<?php
$nombre = $_POST["nombre_usuario"];
echo 'Hola ' . $nombre;
?>

¿No se supone que debería devolverme el nombre ingresado en el <div id="respuesta"></div>?
Lo raro es que no me aparece ningún tipo de eror en la consola pero tampoco se realiza la acción.

PD: El órden en el que coloqué scripts, formulario y CDN es:
- Formulario
- CDN Jquery
- Script

aclaro por el tema de la cascada.
 
Última edición por un moderador:

YeltsinReyes

Lambda
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Desde
16 Feb 2010
Mensajes
2.939
@xcodex seguro la pagina se esta recargando, hazlo asi..

JavaScript:
$("#form_contacto").on("submit", function(event){
    
    event.preventDefault();
    
    $.ajax({
        url: 'formulario-contacto.php',
        type: 'POST',
        data: $('#form_contacto').serialize(),
        success: function(res) {
            $('#respuesta').html(res);
        }
    });
 
});
 
X

xcodex

@xcodex seguro la pagina se esta recargando, hazlo asi..

JavaScript:
$("#form_contacto").on("submit", function(event){
   
    event.preventDefault();
   
    $.ajax({
        url: 'formulario-contacto.php',
        type: 'POST',
        data: $('#form_contacto').serialize(),
        success: function(res) {
            $('#respuesta').html(res);
        }
    });

});
Rarísimo, sigue sin funcionar :(
 

YeltsinReyes

Lambda
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Desde
16 Feb 2010
Mensajes
2.939
@xcodex esta raro, a mi me funciono de una vez!

Screenshot_6.png
 

YeltsinReyes

Lambda
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Desde
16 Feb 2010
Mensajes
2.939
Disculpa pero aquí voy con otra pregunta:
¿En que órden colocaste scripts y CDN? ¿y qué navegador utilizas?

Tengo esto y uso chrome.

HTML:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>Formulario Ajax</title>
</head>
<body>
    
<form id="form_contacto" class="form-general padding-20" method="POST">
    <input placeholder="Nombre" id="nombre_usuario" type="text" name="nombre_usuario">
    <button id="enviar-formulario">Enviar</button>
    <div id="respuesta"></div>
</form>
    
<script src="//code.jquery.com/jquery.js"></script>

<script>
$("#form_contacto").on("submit", function(event){
    
    event.preventDefault();
    
    $.ajax({
        type: 'POST',
        url: 'formulario-contacto.php',
        data: $('#form_contacto').serialize(),
        success: function(res) {
            $('#respuesta').html(res);
        }
    });
 
});
</script>
    
</body>
</html>

PHP:
<?php
    
$nombre = $_POST["nombre_usuario"];
echo 'Hola ' . $nombre;

?>
 
X

xcodex

Tengo esto y uso chrome.

HTML:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title>Formulario Ajax</title>
</head>
<body>
   
<form id="form_contacto" class="form-general padding-20" method="POST">
    <input placeholder="Nombre" id="nombre_usuario" type="text" name="nombre_usuario">
    <button id="enviar-formulario">Enviar</button>
    <div id="respuesta"></div>
</form>
   
<script src="//code.jquery.com/jquery.js"></script>

<script>
$("#form_contacto").on("submit", function(event){
   
    event.preventDefault();
   
    $.ajax({
        type: 'POST',
        url: 'formulario-contacto.php',
        data: $('#form_contacto').serialize(),
        success: function(res) {
            $('#respuesta').html(res);
        }
    });

});
</script>
   
</body>
</html>

PHP:
<?php
   
$nombre = $_POST["nombre_usuario"];
echo 'Hola ' . $nombre;

?>

Probé así y ahora me aparece:
POST http://localhost/formulario-contacto.php[HTTP/1.1 404 Not Found 1ms]

jajaja no entiendo nada
 
X

xcodex

Subí el código a un servidor y funcionó perfecto, pero me preguntaba si es obligatorio convertir todo a JSON, ya que si no lo hago en mi caso funciona de igual manera.
 

YeltsinReyes

Lambda
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Desde
16 Feb 2010
Mensajes
2.939
Subí el código a un servidor y funcionó perfecto, pero me preguntaba si es obligatorio convertir todo a JSON, ya que si no lo hago en mi caso funciona de igual manera.

No es obligado, todo de pende de como lo quieras usar.
por ejemplo si retornaras html, solo texto o varios datos.
 

Andres128

Iota
Programador
Verificación en dos pasos activada
Desde
17 Feb 2012
Mensajes
2.391
Probé así y ahora me aparece:
POST http://localhost/formulario-contacto.php[HTTP/1.1 404 Not Found 1ms]

jajaja no entiendo nada
Si ese 404 es un código que devuelve el servidor frente a un problema o en su caso si fue exitosa la petición devolverá un 200, 201 depende como se configure el script php o el cms como wordpress.

Mira puedes ver el listado aquí:


A mi me confundía mucho esto al principio pero es importante saber los básicos para darse una idea del error o en su caso comprobar si todo fue ok

Por ejemplo mira en chorme: Devuelve un 200 OK

1.jpg


En otro sitio web ejemplo: 40defiebre.com/guia-seo/qufghfor-que-necesito

2.jpg


Devuelve un 404 por que al revisar en la base de datos esto: qufghfor-que-necesito devuelve un 404 por que esa entrada no existe, se puede devolver una cabecera así en php:

PHP:
<?php header("HTTP/1.0 404 Not Found"); ?>

HTML:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
</head>
<body>

MI HTML CUSTOM DE MI 404

</body>
</html>

Ya htaccess o nginx se encargan de redireccionar al archivo 404 custom o los que traen por defecto. Y así con otros códigos 400,401,etc.

Htaccess:

ErrorDocument 403 /403.php
ErrorDocument 404 /404.php

nginx
error_page 403 /403.php;
error_page 404 /404.php;
 
Última edición:

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba