Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Como cargar formulario en ajax?

Estas en el tema de Como cargar formulario en ajax? en el foro de Frameworks JS en Foros del Web. Tengo que hacer un formulario que se recargue con ajax he encontrado algunos tutoriales pero tengo dificultades al momento de hacerlos el formulario sería así ...
  #1 (permalink)  
Antiguo 01/02/2009, 14:41
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 10 meses
Puntos: 0
Como cargar formulario en ajax?

Tengo que hacer un formulario que se recargue con ajax he encontrado algunos tutoriales pero tengo dificultades al momento de hacerlos el formulario sería así
Código HTML:
<div id="form_vote">
<form id="test2" method="get" action="conexion.php" >
<fieldset>
	<legend>Votame!</legend>			
	<div class="field-label">
	<label for="field1-t2"><span class="asterisco">(*)</span>Nombre y apellido</label> :</div>
	 <input name="field1-t2" id="field1-t2" class="required" title="Debes poner tu nombre." />						 
	<div class="field-label">
	 <label for="field3"><span class="asterisco">(*)</span>E-mail</label>
	 :</div>
	 <div class="field-widget"><input name="field3" id="field3" class="required validate-email" title="Debes poner tu E-mail." /></div>
							
                            
	<div class="field-label"> <label for="field4"><span class="asterisco">
(*)</span>Edad</label>
	 :</div>
	 <div class="field-label"><input name="field4" id="field4" class="required validate-number" title="Debes poner tu edad, solo n&uacute;meros." />								
		</div>
                            <br />
							
		<div class="field-label">
		 <label for="field6"><span class="asterisco">(*)</span>Sexo</label>
		 :</div>
		  <select id="field6" name="field6" class="validate-selection" title="Debes poner una opci&oacute;n.">
		<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
                                                       </select>
							<br />
		<div class="field-label"> <label for="field7"><span class="asterisco">(*)</span>País</label>
							  :</div>
                                <select id="field7" name="field7" class="validate-selection" title="No has elegido pa&iacute;s">
								<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
                          </select>
							
                                                     		<?php echo rating_bar('star'); ?>					
						</fieldset>
						<input type="submit" value="Enviar" /> <input type="button" value="Borrar" onclick="valid2.reset(); return false" />
</form>
</div>
</div> 
Que me sugieren?
  #2 (permalink)  
Antiguo 01/02/2009, 18:24
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Como cargar formulario en ajax?

Hola
Hacer lo que deseas no es complicado, pero debes agregar 2 cosas importantes
- Agrega un DIV que vaya a recibir la respuesta
- Agrega el javascript que se encargue de enviar el formulario, yo para ajax prefiero usar jquery que me simplifica muchas cosas.

Aqui puedes encontrar un ejemplo simple que hace lo que deseas
http://www.miguelmanchego.com/2009/a...cargar-jquery/
  #3 (permalink)  
Antiguo 02/02/2009, 21:57
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como cargar formulario en ajax?

He seguido el tuto(gracias!) pero el problema que tengo es que despues de enviar el formulario me deja en el archivo "conexion.php" cuando tendría que estar en la misma página con una respuesta elegida por mí que apareciera debajo del formulario,
alguna idea de porque me deja en el otro archivo?

Gracias por sus soluciones!

Archivo:

Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

<script language="javascript">
$(document).ready(function() {
    $().ajaxStart(function() {
        $('#loading').show();
        $('#result').hide();
    }).ajaxStop(function() {
        $('#loading').hide();
        $('#result').fadeIn('slow');
    });
    $('#form, #fat, #fo3').submit(function() {
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function(data) {
                $('#result').html(data);

            }
        })
        
        return false;
    }); 
})  
</script>
<link rel="stylesheet" type="text/css" href="css/rating.css" />


		<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
<!--
.asterisco {
	color: #F00;
}
-->
</style>
</head>

<body>
<div id="contact_form">
<form method="post" action="conexion.php" id="fo3" name="fo3" >
						<fieldset>
							<legend>Votame!</legend>
							
				    <div class="field-label">
								  <label for="field1-t2"><span class="asterisco">(*)</span>Nombre y apellido</label>
								  :</div>
							 <input name="field1-t2" id="field1-t2" class="required validate-alpha" title="Debes poner tu nombre." />						 
							<div class="field-label">
							  <label for="field3"><span class="asterisco">(*)</span>E-mail</label>
							  :</div>
						  <div class="field-widget"><input name="field3" id="field3" class="required validate-email" title="Debes poner tu E-mail." /></div>
							
                            
								<div class="field-label">
								  <label for="field4"><span class="asterisco">(*)</span>Edad</label>
								  :</div>
							  <div class="field-label">
							    <input name="field4" id="field4" class="required validate-number" title="Debes poner tu edad, solo n&uacute;meros." />
						    </div>
                            <br />
							
							<div class="field-label">
							  <label for="field6"><span class="asterisco">(*)</span>Sexo</label>
							  :</div>
						  <select id="field6" name="field6" class="validate-selection" title="Debes poner una opci&oacute;n.">
									<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
                                                       </select>
							<br />
							<div class="field-label">
							  <label for="field7"><span class="asterisco">(*)</span>País</label>
							  :</div>
                                <select id="field7" name="field7" class="validate-selection" title="No has elegido pa&iacute;s">
								<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
                          </select>				
                                                     				
						</fieldset>
						<input type="submit" value="Enviar" name="mysubmit"/> 
                        <input type="button" value="Borrar" onclick="valid2.reset(); return false" />
</form>
</div>
</div>
<div id="result"></div>

<script type="text/javascript">
	var valid2 = new Validation('contact_form', {useTitles:true});
</script>

</body>
</html> 
  #4 (permalink)  
Antiguo 03/02/2009, 07:36
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Como cargar formulario en ajax?

Hola
Agregaste el jquery??
Segun veo tu codigo no agregaste lo principal, el framework jquery
  #5 (permalink)  
Antiguo 03/02/2009, 13:29
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como cargar formulario en ajax?

Puse solo esa parte porque me parecio que ahí estaba el error el archivo se ve así:
Código HTML:
<?php require('_drawrating.php'); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Formulario de prueba</title>
<script type="text/javascript" language="javascript" src="js/behavior.js"></script>
<script type="text/javascript" language="javascript" src="js/rating.js"></script>
<script type="text/javascript" language="javascript" src="jquery-1.3.min.js"></script>
<script src="scriptaculous/lib/prototype.js" type="text/javascript"></script>
		<script src="scriptaculous/src/effects.js" type="text/javascript"></script>
				<script type="text/javascript" src="validation.js"></script>
<script language="javascript">
$(document).ready(function() {
    $().ajaxStart(function() {
        $('#loading').show();
        $('#result').hide();
    }).ajaxStop(function() {
        $('#loading').hide();
        $('#result').fadeIn('slow');
    });
    $('#form, #fat, #fo3').submit(function() {
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function(data) {
                $('#result').html(data);

            }
        })
        
        return false;
    }); 
})  
</script>
<link rel="stylesheet" type="text/css" href="css/rating.css" />


		<link rel="stylesheet" type="text/css" href="style.css" />
<style type="text/css">
<!--
.asterisco {
	color: #F00;
}
-->
</style>
</head>

<body>
<div id="contact_form">
<form method="post" action="conexion.php" id="fo3" name="fo3" >
						<fieldset>
							<legend>Votame!</legend>
							
				    <div class="field-label">
								  <label for="field1-t2"><span class="asterisco">(*)</span>Nombre y apellido</label>
								  :</div>
							 <input name="field1-t2" id="field1-t2" class="required validate-alpha" title="Debes poner tu nombre." />						 
							<div class="field-label">
							  <label for="field3"><span class="asterisco">(*)</span>E-mail</label>
							  :</div>
						  <div class="field-widget"><input name="field3" id="field3" class="required validate-email" title="Debes poner tu E-mail." /></div>
							
                            
								<div class="field-label">
								  <label for="field4"><span class="asterisco">(*)</span>Edad</label>
								  :</div>
							  <div class="field-label">
							    <input name="field4" id="field4" class="required validate-number" title="Debes poner tu edad, solo n&uacute;meros." />
						    </div>
                            <br />
							
							<div class="field-label">
							  <label for="field6"><span class="asterisco">(*)</span>Sexo</label>
							  :</div>
						  <select id="field6" name="field6" class="validate-selection" title="Debes poner una opci&oacute;n.">
									<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
                                                       </select>
							<br />
							<div class="field-label">
							  <label for="field7"><span class="asterisco">(*)</span>País</label>
							  :</div>
                                <select id="field7" name="field7" class="validate-selection" title="No has elegido pa&iacute;s">
								<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
                          </select>				
                                                     				
						</fieldset>
						<input type="submit" value="Enviar" name="mysubmit"/> 
                        <input type="button" value="Borrar" onclick="valid2.reset(); return false" />
</form>
</div>
</div>
<div id="result"></div>

<script type="text/javascript">
	var valid2 = new Validation('contact_form', {useTitles:true});
</script>

</body>
</html> 
  #6 (permalink)  
Antiguo 03/02/2009, 14:35
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Como cargar formulario en ajax?

No se puede combinar frameworks, o bueno se puede pero no es conveniente porque surgen errores, veo que estás usando prototype, pero el formulario esta con jquery, además veo que estas usando validación y la validación intercepta al evento submit igual que el envio de formulario.
Tienes que depurar tu codigo con webdeveloper y/o firebug para que te indiquen donde marca error, debe ser una de las cosas que te indiqué o ambas
  #7 (permalink)  
Antiguo 03/02/2009, 20:32
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como cargar formulario en ajax?

Pues mira sere muy turro porque puedo validar con prototype y enviar datos con jquery, por separado , no puedo hacer que funcionen juntos y no he logrado validar con el plugin de jquery, ni tampoco enviar la info con prototype.

por aquí ando en mi codigo:

Código HTML:
<<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Enviar formulario sin recargar</title>
<script language="javascript" src="jquery-1.3.1.js"></script>
<script type="text/javascript" src="js/validation.js"></script>
<script language="javascript" src="jquery.maskedinput-1.2.1.pack.js"></script>
<script language="javascript" src="jquery.validate.js"></script>
<script language="javascript">
$(document).ready(function() {
    $().ajaxStart(function() {
        $('#loading').show();
        $('#result').hide();
    }).ajaxStop(function() {
        $('#loading').hide();
        $('#result').fadeIn('slow');
    });
    $('#form, #fat, #fo3').submit(function() {
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
            success: function(data) {
                $('#result').html(data);

            }
        })
        
        return false;
    }); 
})  
</script>

<script id="demo" type="text/javascript">
$(document).ready(function() {
	formValidator.init({
          form: "#vote_form",
	var validator = $("#vote_form").validate({
		rules: {
			nombre: "required",
			lastname: "required",
			email: {
				required: true,
				email: true,				
						},
			edad: "required",
			sexo: "required"
			pais: "required"
		},
		messages: {
			nombre: {
				required: "Debes poner tu nombre y apellido",
				minlength: jQuery.format("Enter at least {3} characters"),
				remote: jQuery.format("{0} is already in use")
			},
			email: {
				required: "Debes poner un E-mail válido",
				minlength: "Debes poner un E-mail válido",
				remote: jQuery.format("{0} is already in use")
			},
			edad: {
				required: "Debes llenar este campo",
			},
			sexo: {
				required: "Debes llenar este campo",
			},
			pais: {
				required: "Debes llenar este campo",
			},
		// specifying a submitHandler prevents the default submit, good for the demo
		submitHandler: function() {
			alert("submitted!");
		},
		// set this class to error-labels to indicate valid fields
		success: function(label) {
			// set &nbsp; as text for IE
			label.html("&nbsp;").addClass("checked");
		}
	});
	
});
</script>
  </script>
<link rel="stylesheet" type="text/css" href="css/rating.css" />
<link rel="stylesheet" type="text/css" href="css/style.css" />
<link rel="stylesheet" type="text/css" href="css/milk.css" />
<link rel="stylesheet" type="text/css" href="css/chili.css" />
<style type="text/css">
<!--
body,td,th {
	color: #333333;
	font-family:Arial, Helvetica, sans-serif;
	font-size:12px;
}
fieldset {
	width:380px;
	margin:auto;
}
#result {
	width:280px;
	padding:10px;
	border:1px solid #bfcddb;
	margin:auto;
	margin-top:10px;
	text-align:center;
}
-->
</style></head>

<body>
<div id="contact_form">
<form method="post" action="conexion.php" id="vote_form" name="vote_form" >
<fieldset>
							<legend>Votame!</legend>
							
				    <div class="field-label">
								  <label for="nombre"><span class="asterisco">(*)</span>Nombre y apellido</label>
								  :</div>
							 <input name="nombre" id="nombre" class="required validate-alpha" title="Debes poner tu nombre." />						 
							<div class="field-label">
							  <label for="mail"><span class="asterisco">(*)</span>E-mail</label>
							  :</div>
						  <div class="field-widget"><input name="mail" id="mail" class="required validate-email" title="Debes poner tu E-mail." /></div>
							
                            
								<div class="field-label">
								  <label for="edad"><span class="asterisco">(*)</span>Edad</label>
								  :</div>
							  <div class="field-label">
							    <input name="edad" id="edad" class="required validate-number" title="Debes poner tu edad, solo n&uacute;meros." />
						    </div>
                            <br />
							
							<div class="field-label">
							  <label for="sexo"><span class="asterisco">(*)</span>Sexo</label>
							  :</div>
						  <select id="sexo" name="sexo" class="validate-selection" title="Debes poner una opci&oacute;n.">
									<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
  </select>
							<br />
							<div class="field-label">
							  <label for="pais"><span class="asterisco">(*)</span>País</label>
							  :</div>
                                <select id="pais" name="pais" class="validate-selection" title="No has elegido pa&iacute;s">
								<option value="-1" selected="selected">--Seleccione--</option>
                                                          <option value="1">Masculino</option>
                                                          <option value="2">Femenino</option>
                          </select>				
                                                     				
</fieldset><div  align="center">
<input type="submit"   name="mysubmit" value="Enviar" />
<input type="button" value="Borrar" onclick="valid2.reset(); return false" />
</form></div>

<div id="result"></div>

</body>
</html> 

Última edición por martuanez; 03/02/2009 a las 21:04
  #8 (permalink)  
Antiguo 04/02/2009, 07:23
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Como cargar formulario en ajax?

Como tu mismo lo dices no se puede hacer que funcionen al mismo tiempo y mas aun invocando al mismo evento, o cambias todo lo referente al formulario a jquery o a prototype pero no puedes andar mezclándolos, y luego dejar que ambos se peleen por recger el submit del formulario.

En este caso prototype captura el evento, valida y no se lo regresa a jquery por eso nunca se activa la parte de envio del formulario.
  #9 (permalink)  
Antiguo 05/02/2009, 16:52
 
Fecha de Ingreso: febrero-2003
Mensajes: 23
Antigüedad: 21 años, 2 meses
Puntos: 0
Respuesta: Como cargar formulario en ajax?

He probado el ejemplo que habeis puesto y tengo una duda, ¿como dejo que los campos vuelvan a vaciarse una vez he enviado el formulario?
  #10 (permalink)  
Antiguo 06/02/2009, 07:23
Avatar de XLogus  
Fecha de Ingreso: noviembre-2008
Ubicación: AQP
Mensajes: 495
Antigüedad: 15 años, 5 meses
Puntos: 19
Respuesta: Como cargar formulario en ajax?

Eso lo haces agregando una pequeña función javascript, que setee todos los value en nada, algo como, por cada campo:
Código HTML:
$("#micampo").val("");
  #11 (permalink)  
Antiguo 06/02/2009, 13:23
 
Fecha de Ingreso: julio-2008
Mensajes: 109
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Como cargar formulario en ajax?

Puedes probar con esto :
http://docs.jquery.com/Plugins/Valid...ator/resetForm
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:48.