Validar formulario PHP con JQUERY

Iniciado por pisagatos, 22 Julio 2010, 14:35 PM

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

pisagatos

Muy buenas tardes!!! Como estamos!!!

Tengo un formulario de contacto en una página web, el cual se le pide al usuario rellenar: nombre, correo electrónico y mensaje.

Para mostrar este formulario uso Jquery con la función load(), es decir, tengo un index que muestra un enlace al formulario, y esta muestra el formulario, que es otra página aparte llamada contacto.

Lo que he intentado, sin éxito, es que esos datos que rellena el usuario los vuelva a enviar a la página contacto.php para validar esos datos en PHP y en caso que haya error retorne los errores correspondientes en el mismo formulario.

No sé si me explico bien, pero dejo un esquema por si no se entiende...



He probado con:


$.ajax
({
 url: "contacto.php",
 async: true,
 cache: false,
 global: false,
 type: "POST",
 data: ({nombre : $('#nombre').val()}),
 dataType: "html",
 success: $("#contenedorDIV").responseText,
}).responseText;


pero no sé usarlo o no me funciona....

Mi idea es VALIDAR CON PHP, q tiene algun error lo dice en el mismo formulario, q no tiene ningún error pues envía los datos....

A ver si alguien me echa una mano!!  ;-)
Muchas gracias

MazarD

Success espera una función y no deberías utilizar el responseText de $.ajax si luego no lo vas a asignar a ninguna variable, prueba así:

Código (javascript) [Seleccionar]

[pre] $.ajax
({
 url: "contacto.php",
 async: true,
 cache: false,
 global: false,
 type: "POST",
 data: ({nombre : $('#nombre').val(), mensaje: $('#aquiinputmensaje').val()}),
 dataType: "html",
 success: function (data) {
                        alert(data);  //Testeando ando
                        $("#contenedorDIV").html(data);

                   }
});[/pre]


Otra forma equivalente sin utilizar el success y usando el responseText como hacías sería:

Código (javascript) [Seleccionar]

[pre] $("#contenedorDIV").html(
        $.ajax
    ({
 url: "contacto.php",
 async: true,
 cache: false,
 global: false,
 type: "POST",
 data: ({nombre : $('#nombre').val(), mensaje: $('#aquiinputmensaje').val()}),
 dataType: "html",
     }).responseText
    );[/pre]


Saludos!

-Learn as if you were to live forever, live as if you were to die tomorrow-

http://www.mazard.info
http://twitter.com/MazarD
irc://irc.freenode.org/elhacker.net

pisagatos

#2
Muchas graciass MazarD!!

Me ha servido tio! El problema es que funciona en Firefox perfectamente, pero en IE no le hace ni pu** caso... este código he puesto

Código (javascript) [Seleccionar]

$('#btnEnviar').click(function()
{
alert('Holaaaa');
$.ajaxSetup({cache: false});
$.ajax
({
url: "./contacto.php",
async: true,
cache: false,
global: false,
type: "POST",
data: ({nombre : $('#nombre').val(), correo: $('#correo').val(), mensaje: $('#mensaje').val()}),
dataType: "html",
success: function (data)
{
$("#divTXT").html(data);
}
});
});


En firefox perfecto! En IE, no le hace ni caso, le pulso el botón y ni hace el alert ni continua con el $.ajax

¿Qué estoy poniendo mal? Una mano!!
Muchas gracias!!  ;-) ;-)

pisagatos

#3
Ya está solucionado!!

El problema está en que parece ser que no es lo mismo para IE cuando pones:

Código (javascript) [Seleccionar]
<script type="aplication/javascript" charset="utf-8">

que poner...

Código (javascript) [Seleccionar]
<script type="text/javascript" charset="utf-8">

Por si a alguien le sirve... aquí tmb hablan de este tema:
http://www.bdaley.com/2009/03/28/applicationjavascript-vs-textjavascript/

Con la segunda forma me ha funcionado perfectamente!!  :laugh: