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

Problema con form.serialize() y $.ajax()

Estas en el tema de Problema con form.serialize() y $.ajax() en el foro de Frameworks JS en Foros del Web. Buenos dias a todo, tengo un pequeño problema intentando pasar un formulario por ajax, el código que uso es este: Código: $('#form').submit(function(){ var este=$(this); $.ajax({ ...
  #1 (permalink)  
Antiguo 07/07/2010, 01:12
Avatar de Neldor  
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 1
Problema con form.serialize() y $.ajax()

Buenos dias a todo, tengo un pequeño problema intentando pasar un formulario por ajax, el código que uso es este:

Código:
$('#form').submit(function(){
  var este=$(this);
  $.ajax({
    type: 'POST',
    url: 'archivo.php',
    data: este.serialize(),
    success: function(data){ alert('Funciona'); },
    error: function(){ alert('No funciona'); }
  });
});
Al pulsar sobre el formulario me devuelve un 'No funciona'.

Lo curioso es que en otra página hago exactamente lo mismo y funciona perfectamente, me pasa el formulario bién creado como array, no entiendo que está pasando, he puesto que me haga un alert(este.serialize()) antes de la llamada ajax y me muestra la cadena como debe ser.

¿Alguien tiene alguna propuesta?

EDIT:

Al final he encontrado el problema, parece ser que me da que no funciona cuando no introduzco ningún valor en los campos, y la verdad es que quisiera evitar eso ya que supuestamente el formulario es para hacer búsquedas y quiero que al no introducir valores me muestre todos los productos (sigo asegurando que en otra página si funciona perfectamente tal y como quiero con el mísmo código).
Para mas ayuda os dejo el código del formulario:

Código HTML:
<form id='form_buscar_prods' method='post' action='../modules/wprodmove/utils/php1.php'>
	<input type='hidden' name='idioma' value='3' />
	<label>
	<select id='buscar_select_tabla' name='tabla'>
		<option value='id'>Id</option>
		<option value='referencia'>Referencia</option>
		<option value='ean'>EAN</option>
		<option value='nombre'>Nombre</option>									
	</select>
	</label>
	<input id='buscar_text_tabla' type='text' name='referencia' />
	<br />
	<label>Fabricante</label>
	<select id='buscar_select_fabricante' name='fabricante'>
		<option selected='selected' value='0'>Todos los fabricantes</option>
							
	</select>
	<br />
	<label>Categoría</label>
	<select id='buscar_select_categoria' name='categoria'>
		<option selected='selected' value='0'>Todas las categorias</option>							
	</select>
	<br />
	<label>Última actualización</label>
	<select name='actualizacion'>
		<option value='1'>Todo</option>
		<option style='background: #cfc;' value='2'>Menos de 1 mes</option>
		<option style='background: #ffc;' value='3'>Menos de 2 meses</option>
		<option style='background: #fcc;' value='4'>Mas de 2 meses</option>							
	</select>
	<br />
	<label>Fecha de actualización (dd/mm/aa)'</label>
	<input type='text' name='fechamin' /> <!-- La fecha más antigua -->
	hasta
	<input type='text' name='fechamax' /> <!-- La fehca más próxima -->							
	<br />				
	<input id='boton_buscar' type='submit' value='Buscar' />
</form> 

Última edición por Neldor; 07/07/2010 a las 01:35
  #2 (permalink)  
Antiguo 07/07/2010, 03:09
Avatar de Chenon  
Fecha de Ingreso: abril-2005
Ubicación: Palma de Mallorca
Mensajes: 99
Antigüedad: 19 años, 1 mes
Puntos: 11
Respuesta: Problema con form.serialize() y $.ajax()

Es un problema de selectores.

"$('#form').submit(function(){"
Con esta linea te refieres a que todos los formularios con el id "form". Y no hay ninguno en el codigo fuente.

en ese caso, tienes que sustituir #form por #form_buscar_prods

Un saludo.
  #3 (permalink)  
Antiguo 07/07/2010, 03:26
Avatar de Neldor  
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con form.serialize() y $.ajax()

Bueno, lo de '#form' lo he puesto antes de editar y por eso ha quedado descuadrado, pero de todas maneras el '#' indica que es un id y no un elemento, con lo cual me cogería el formulario con id 'form' y no todos los de la página, y evidentemente en mi código tengo los ids bién puestos
  #4 (permalink)  
Antiguo 07/07/2010, 04:31
 
Fecha de Ingreso: diciembre-2009
Ubicación: Misiones
Mensajes: 867
Antigüedad: 14 años, 5 meses
Puntos: 65
Respuesta: Problema con form.serialize() y $.ajax()

no tiene que ver con serialize, podes poner un form que no exista y una url que no exista

tenes que fijarte que error te devuelve

Código Javascript:
Ver original
  1. error: function(e){ alert(e.status); }
  #5 (permalink)  
Antiguo 07/07/2010, 04:36
Avatar de Neldor  
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Problema con form.serialize() y $.ajax()

Ya he encontrado el problema, no tiene nada que ver con el form ni con el javascript, era simplemente una función no definida en el archivo de respuesta.

Al final el código original funciona bién.

Etiquetas: ajax, jquery, serialize(), 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 16:18.