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

Error para enviar form ajax

Estas en el tema de Error para enviar form ajax en el foro de Frameworks JS en Foros del Web. buenas, estoy haciendo una validacion con jquery y quiero enviar el formulario con la funcion ajax de jquery, pero me da este error. La idea ...
  #1 (permalink)  
Antiguo 20/09/2011, 00:51
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Error para enviar form ajax

buenas, estoy haciendo una validacion con jquery y quiero enviar el formulario con la funcion ajax de jquery, pero me da este error.
La idea es validar el form si da true envio con ajax sin recargar la pagina, mostrando los datos enviados
a la bd.

Error: searchshield[aEng[i] + "SearchEngine"] is undefined
Archivo de origen: chrome://searchshield/content/overlay.js
Línea: 1561

La validacion funciona y el envio con ajax no, pero cambio el evento ready y no anda la validacion pero el envio de form si.

Alguien sabe de este problema, soy nuevo en este tema y probe muchas formas pero no lo saco por eso recurro a ustedes.

Gracias de antemano. :)
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán

Última edición por kaman10; 20/09/2011 a las 00:54 Razón: Trato de ser lo mas explicito posible
  #2 (permalink)  
Antiguo 20/09/2011, 06:54
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Error para enviar form ajax

¿y como quieres que te ayuden si no muestras parte del código????
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 20/09/2011, 14:29
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error para enviar form ajax

codigo js
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.  
  3. function validar(){
  4. ...
  5. // Validacion correcta ahora envio form
  6.     $('#formusuario').submit(function() {
  7.     // Enviamos el formulario usando AJAX
  8.         $.ajax({
  9.             type: 'POST',
  10.             url: $(this).attr('action'),
  11.             data: $(this).serialize(),
  12.             // Mostramos un mensaje con la respuesta de PHP
  13.             success: function(data) {
  14.                 $('#resultado').html(data);
  15.             }
  16.         })        
  17.         return false;
  18.     });
  19.     });
  20. }
No se si el envio tengo que ponerlo en otra funcion para cuando se valida correctamente envie el form y muestre resultados sin recargar.
Saludos
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán
  #4 (permalink)  
Antiguo 22/09/2011, 01:22
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error para enviar form ajax

Alguien me puede dar una mano con este problema?
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán
  #5 (permalink)  
Antiguo 22/09/2011, 07:29
 
Fecha de Ingreso: abril-2010
Mensajes: 151
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Error para enviar form ajax

Código Javascript:
Ver original
  1. var nacimiento ={
  2. nuevo: function(){
  3. $.ajax({
  4.             type: 'POST',
  5.             url: 'ARCHIVO PHP O DIRECCION URL',
  6.             data: 'DATOS A ENVIAR POR POST',
  7. success: function(h){
  8.                 switch(h.charAt(0)){
  9.                     case '0': //Error
  10.                 my_popup.procesando_fin();
  11.                     alert('Error', h.substring(3));;
  12.  
  13.                         break;
  14.                     case '1': //OK
  15.                            
  16.                         $('#main').addClass('error').html(h.substring(3)).slideDown();
  17.                         $('.loader').show();
  18.                         break;
  19.                 }
  20.                 //
  21.            
  22.  
  23.             }
  24.          });
  25. }
  26.  
  27. }

formulario

<div id="main">

<div class="field clearfix">

<label for="municipo">MUNICIPIO</label>
<input type="text" class="text ui-corner-all form-input-text box-shadow-soft" style="max-width:360px;" id="g_municipio" name="g_municipio" maxlength="35">
</div>

<div class="buttons">

<input type="button" class="ui-button-positive ui-state-default ui-corner-all box-shadow-soft ui-button ui-widget ui-button-text" id="new" value="Guardar cambios" onclick="nacimiento.nuevo('true')"/>
</div>

</div>

asi envio yo el formulario con js es un ejemplo
  #6 (permalink)  
Antiguo 22/09/2011, 08:32
Avatar de neglivv  
Fecha de Ingreso: julio-2011
Mensajes: 103
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Error para enviar form ajax

prueba con esto: http://www.forosdelweb.com/f127/solucion-formulario-con-jquery-ajax-php-930858/
  #7 (permalink)  
Antiguo 22/09/2011, 12:16
 
Fecha de Ingreso: agosto-2010
Mensajes: 24
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Error para enviar form ajax

kaman10 pone el formulario, le estas errando con los ID del formulario, usa firebug, pone el formulario
  #8 (permalink)  
Antiguo 22/09/2011, 16:54
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error para enviar form ajax

formusuario es el identificador del formulario, el resultado es el id de un div donde muestro lo procesado por php.
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán
  #9 (permalink)  
Antiguo 22/09/2011, 16:55
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error para enviar form ajax

Cita:
Iniciado por neglivv Ver Mensaje
este script funciona, pero en mi problema no anda.
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán
  #10 (permalink)  
Antiguo 22/09/2011, 16:58
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error para enviar form ajax

si alguien sabe a que se debe el error que me muestra la consola.

Error: searchshield[aEng[i] + "SearchEngine"] is undefined
Archivo de origen: chrome://searchshield/content/overlay.js
Línea: 1561

Porque causas se produce este error?
A ver si por ahi encuentro la respuesta, gracias.
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán
  #11 (permalink)  
Antiguo 23/09/2011, 08:55
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Error para enviar form ajax

Te han dicho en alguna respuesta anterior que pusieses el formulario. Ponlo

Pon también la parte de validación en javascript.
  #12 (permalink)  
Antiguo 23/09/2011, 15:16
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error para enviar form ajax

Formulario limpio
Código HTML:
<form name="formularioUsuario" onSubmit="return validarFormulario()" 
id="formusuario" action="procesar.php" method="POST">
	 
	<table>
	<thead></thead>
					 <tbody>				    
						<tr>
	<td>Nombre</td>
	<td>
	<input type="text" name="nombre" id="nombre" value="" />
							 </td>
                             <td>    
	<span id="errorNombre" style="display:none;" >
         Campo requerido
    </span>
                        </td>
				        </tr>	
						<tr>
	<td>Apellido</td>
	<td>
	<input type="text" name="apellido" id="apellido" value="" />
							 </td>
							 <td>
    <span id="errorApellido" style="display:none;" >
         Campo requerido
    </span>
                             </td>
				        </tr>	
						<tr>
	<td>e-Mail</td>
	<td>
	<input type="text" name="email" id="email" value="" />
							 </td>
							 <td>
    <span id="errorEmail" style="display:none;" >
         Campo requerido y debe estar correctamente escrito
    </span>
                             </td>
				        </tr>	
						<tr>
						     <td colspan="2">
    <input type="submit" name="guardar" value="Guardar" />			     						    
						         
	<input type="button" name="cancelar" value="Cancelar" 
	onclick="document.location.href = document.referrer" />
							 </td>
				        </tr>						
					 </tbody>	
			     </table>
				 <div id="resultado"></div> 
Validacion del formulario y envio
Código:
$('#formusuario').ready(function(){  

function validarFormulario(){
    var valido= true;
	
	// Valido el nombre
	if ($('#nombre').val()==0){
         valido= false;
	     jQuery("#errorNombre").show().css({'color':'red'}); 
	}else{ 
         jQuery("#errorNombre").hide(300); 
	}
	
	// Valido el apellido
	if ($('input#apellido').val()==0){
	     valido= false;
	     $("span#errorApellido").show().css({'color':'red'}); 
	}else{
	     $("span#errorApellido").hide(300);
	}
	
	// Valido el email
	if ($('input#email').val()==""){ 
	     valido= false; 
	     $("#errorEmail").show().css({'color':'red'});
	}else{
 var expreg = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,3}/ 
    if (!expreg.test($('#email').val())) { 
	      valido= false;
	     $("#errorEmail").show().css({'color':'red'}); 
	}else{
	     $("#errorEmail").hide(300);
	}}
		
	// El formulario fue validado y se envia
	return valido;

    $('#formusuario').submit(function() {
    // Enviamos el formulario usando AJAX
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),
    // Mostramos un mensaje con la respuesta de PHP
            success: function(data) { 
                $('#resultado').html(data);
            }
        })        
        return false;
    });	
	});	
	}
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán

Última edición por kaman10; 23/09/2011 a las 15:24
  #13 (permalink)  
Antiguo 25/09/2011, 16:29
Avatar de neglivv  
Fecha de Ingreso: julio-2011
Mensajes: 103
Antigüedad: 13 años, 4 meses
Puntos: 11
Respuesta: Error para enviar form ajax

mmm... no sé si es algo tarde para contestar. Y tampoco se si esto pueda solucionar tu problema (espero que si )
Intenta cambiando los <span></span> donde muestras los errores por unos <div>
por ejemplo:
Código HTML:
div.errores
{
	color: #7f1418;
    font-family:Verdana, Arial, Helvetica, sans-serif;
	font-size:14px;
    text-decoration:none;
	font-weight:normal;
}
... 
<div class="errorNombre errores" style="display:none;">Ingrese un nombre v&aacute;lido</div> 
y en la validación del formulario:
$(".errorNombre").show();

Última edición por neglivv; 25/09/2011 a las 16:30 Razón: falto informacion
  #14 (permalink)  
Antiguo 25/09/2011, 23:17
Avatar de kaman10  
Fecha de Ingreso: enero-2011
Ubicación: Uruguay
Mensajes: 63
Antigüedad: 13 años, 10 meses
Puntos: 1
Respuesta: Error para enviar form ajax

neglivv nunca es tarde para dar una mano, igual te agradezco, ya lo voy solucionando, lo que hice fue poner la parte de envio con ajax del formulario despues del div "resultados", fue asi que entonces pude lograr que me valide el form y luego lo envie.

La validacion esta en el encabezado, no es de lo mejor pero funciona, igual espero alguna otra solucion.

saludos
__________________
La inteligencia y la voluntad son los dos principales aliados del triunfo.
César Guzmán
  #15 (permalink)  
Antiguo 26/09/2011, 02:32
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Error para enviar form ajax

Además de ciertos errores como no cerrar bien las llaves, la función validarFormulario tiene que estar fuera del $(document).ready o te dirá que no está declarada.

Pon el código tal cual te lo pongo dentro del <head>.

Código Javascript:
Ver original
  1. function validarFormulario(){
  2.     var valido= true;
  3.    
  4.     // Valido el nombre
  5.     if ($('#nombre').val()==0){
  6.          valido= false;
  7.          jQuery("#errorNombre").show().css({'color':'red'});
  8.     }else{
  9.          jQuery("#errorNombre").hide(300);
  10.     }
  11.    
  12.     // Valido el apellido
  13.     if ($('input#apellido').val()==0){
  14.          valido= false;
  15.          $("span#errorApellido").show().css({'color':'red'});
  16.     }else{
  17.          $("span#errorApellido").hide(300);
  18.     }
  19.    
  20.     // Valido el email
  21.     if ($('input#email').val()==""){
  22.          valido= false;
  23.          $("#errorEmail").show().css({'color':'red'});
  24.     }else{
  25.  var expreg = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,3}/
  26.     if (!expreg.test($('#email').val())) {
  27.           valido= false;
  28.          $("#errorEmail").show().css({'color':'red'});
  29.     }else{
  30.          $("#errorEmail").hide(300);
  31.     }
  32.     }
  33.     return valido;
  34.     }
  35.  
  36. $('#formusuario').ready(function(){  
  37.    
  38.  
  39.     $('#formusuario').submit(function() {
  40.     // Enviamos el formulario usando AJAX
  41.         $.ajax({
  42.             type: 'POST',
  43.             url: $(this).attr('action'),
  44.             data: $(this).serialize(),
  45.     // Mostramos un mensaje con la respuesta de PHP
  46.             success: function(data) {
  47.                 $('#resultado').html(data);
  48.             }
  49.         })        
  50.         return false;
  51.     });    
  52.    
  53.     });

Así debería funcionarte sin ningún problema.

Aun así, se puede hacer de otro manera, a mi parecer mejor (no mezclas el html y el javascript).

Código Javascript:
Ver original
  1. function validarFormulario(){
  2.     var valido= true;
  3.    
  4.     // Valido el nombre
  5.     if ($('#nombre').val()==0){
  6.          valido= false;
  7.          jQuery("#errorNombre").show().css({'color':'red'});
  8.     }else{
  9.          jQuery("#errorNombre").hide(300);
  10.     }
  11.    
  12.     // Valido el apellido
  13.     if ($('input#apellido').val()==0){
  14.          valido= false;
  15.          $("span#errorApellido").show().css({'color':'red'});
  16.     }else{
  17.          $("span#errorApellido").hide(300);
  18.     }
  19.    
  20.     // Valido el email
  21.     if ($('input#email').val()==""){
  22.          valido= false;
  23.          $("#errorEmail").show().css({'color':'red'});
  24.     }else{
  25.  var expreg = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,3}/
  26.     if (!expreg.test($('#email').val())) {
  27.           valido= false;
  28.          $("#errorEmail").show().css({'color':'red'});
  29.     }else{
  30.          $("#errorEmail").hide(300);
  31.     }
  32.     }
  33.     return valido;
  34.     }
  35.  
  36. $('#formusuario').ready(function(){  
  37.    
  38.  
  39.     $('#formusuario').submit(function() {
  40.        
  41.         if (validarFormulario()){
  42.            
  43.     // Enviamos el formulario usando AJAX
  44.         $.ajax({
  45.             type: 'POST',
  46.             url: $(this).attr('action'),
  47.             data: $(this).serialize(),
  48.     // Mostramos un mensaje con la respuesta de PHP
  49.             success: function(data) {
  50.                 $('#resultado').html(data);
  51.             }
  52.         })      
  53.         }  
  54.         return false;
  55.     });    
  56.    
  57.     });

Y le quitas el onSubmit en el formulario:

Código HTML:
Ver original
  1. <form name="formularioUsuario"
  2. id="formusuario" action="procesar.php" method="POST">
  3.      
  4.     <table>
  5.     <thead></thead>
  6.                      <tbody>                    
  7.                         <tr>
  8.     <td>Nombre</td>
  9.     <td>
  10.     <input type="text" name="nombre" id="nombre" value="" />
  11.                              </td>
  12.                              <td>    
  13.     <span id="errorNombre" style="display:none;" >
  14.          Campo requerido
  15.     </span>
  16.                         </td>
  17.                         </tr>    
  18.                         <tr>
  19.     <td>Apellido</td>
  20.     <td>
  21.     <input type="text" name="apellido" id="apellido" value="" />
  22.                              </td>
  23.                              <td>
  24.     <span id="errorApellido" style="display:none;" >
  25.          Campo requerido
  26.     </span>
  27.                              </td>
  28.                         </tr>    
  29.                         <tr>
  30.     <td>e-Mail</td>
  31.     <td>
  32.     <input type="text" name="email" id="email" value="" />
  33.                              </td>
  34.                              <td>
  35.     <span id="errorEmail" style="display:none;" >
  36.          Campo requerido y debe estar correctamente escrito
  37.     </span>
  38.                              </td>
  39.                         </tr>    
  40.                         <tr>
  41.                              <td colspan="2">
  42.     <input type="submit" name="guardar" value="Guardar" />                                            
  43.                                  
  44.     <input type="button" name="cancelar" value="Cancelar"
  45.    onclick="document.location.href = document.referrer" />
  46.                              </td>
  47.                         </tr>                        
  48.                      </tbody>    
  49.                  </table>
  50.                  <div id="resultado"></div>

Saludos

Etiquetas: ajax, funcion, js, formulario
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 15:18.