Foros del Web » Programando para Internet » Jquery »

AJAX uso correcto?

Estas en el tema de AJAX uso correcto? en el foro de Jquery en Foros del Web. Buenos días, estoy usando la función Ajax de jquery y me pasa una cosa curiosa, quizás no lo uso adecuadamente. Tengo un formulario y envío ...
  #1 (permalink)  
Antiguo 11/07/2014, 06:02
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
AJAX uso correcto?

Buenos días,

estoy usando la función Ajax de jquery y me pasa una cosa curiosa, quizás no lo uso adecuadamente.

Tengo un formulario y envío datos al servidor para hacer un insert en la base de datos.
Cuando pongo otros datos y los envío de nuevo hace dos inserts con los valores actuales.
Cuando pongo por tercera vez datos y los envío esta vez hace 3 inserts con los valores actuales.

El código es el siguiente:

Código HTML:
datos_servidor="&t=1&descripcion="+descripcion;

$.ajax({ url: "servidor.php", type: "POST", data: datos_servidor });

Código PHP:

if($_POST['t']==1$insert "insert into ... (descripcion...) VALUES ('".$_POST['descripcion]."'...);

else 
//Nada por aqui 
Es como si hiciera la petición actual + la anterior ya hecha.

PD: en este caso no uso "succes:" pues el servidor no me responde nada.
PD2: en este caso no uso ""beforesend:" pues en este caso no lo necesito.

Saludos
  #2 (permalink)  
Antiguo 11/07/2014, 12:02
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: AJAX uso correcto?

Sería de ayuda que nos muestres todo el código PHP, porque así como lo muestras y explicas, no tendría porqué producirse ese bucle de inserciones, quizá haya algo que no nos muestres y esté produciendo esto.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 12/07/2014, 13:24
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: AJAX uso correcto?

Hola,

el php no tiene gran secreto, es un archivo llamado servidor.php

que hace una conexión a la base de datos:



Y luego tiene este if con else por el momento:


Código PHP:

//Conexión
$conexion mysql_connect("localhost","root");
if(!
$conexion ) echo("<h1>Error en la base de datos</h1>");          

//Inserto descripcion
if($_POST['t']==1{
 
$insert "insert into tabla (id,descripcion) VALUES (null,'".$_POST['descripcion]."'); 
  
mysql_query($insert,$conexion);

}
else{
  echo(
"Aquí no entro");

Saludos
  #4 (permalink)  
Antiguo 12/07/2014, 14:40
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: AJAX uso correcto?

Te faltó una comilla justo antes de cerrar los corchetes en la variable que llega por POST:

Código PHP:
Ver original
  1. $insert = "insert into tabla (id,descripcion) VALUES (null,'".$_POST['descripcion']."');

No olvides desinfectar los datos antes de ejecutar la consulta SQL.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 13/07/2014, 00:11
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: AJAX uso correcto?

Hola,

ya está corregido el error de la comilla. Haciendo pruebas me lo dejé.

Me sigue pasando que se duplican pero me he dado cuenta de que no siempre.

Si voy rellenando el formulario con información diferente y voy pulsando el botón tengo esto:

Escribo: a
BD: a

Escribo: b
BD: a,b,b

Escribo: c
BD: a,b,b,c,c,c

Va añadiendo el mismo valor introducido varias veces (como si enviara cada vez la petición anterior).

En cambio hago otra petición con ajax diferente a esa (pues otro botón o otro actualizar la página o un link etc).

Escribo: d
BD: a,b,b,c,c,c,d

Solo añade 1

El php solo es un insert con una condición y eso son los parámetros que se envían mediante el ajax. Esos parámetros los reinicio como veis en el primer ejemplo cada vez que hago el ajax.

Pregunto si uso bien el ajax pues parece como si se ejecutara X veces por las veces usado anteriormente. Normalmente he usado XmlHttpResquest y no tenía este problema.

Saludos
  #6 (permalink)  
Antiguo 16/07/2014, 03:18
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: AJAX uso correcto?

Buenos días,

creo que el error es de donde estoy llamando la función ya que hago lo siguiente:


Código HTML:
function anadir_descripcion(){

  datos_servidor="&t=1&descripcion="+descripcion;

  $.ajax({ url: "servidor.php", type: "POST", data: datos_servidor });

}


('#txt_descripcion).keypress(function(event){ { if(event.which==13) anadir_descripcion();  } } );


$('#id_boton').click(anadir_descripcion);
 


Solo me está pasando cuando presiono la tecla intro, cuando pulso el botón "id_boton" funciona perfectamente.

Saludos
  #7 (permalink)  
Antiguo 16/07/2014, 10:45
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: AJAX uso correcto?

Quizá tu navegador detecte el event.keyCode en lugar del event.which. Prueba haciendo ese cambio.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 17/07/2014, 00:51
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: AJAX uso correcto?

Hola,

esto funciona:

Código HTML:
('#txt_descripcion).keypress(function(event){ { if(event.which==13) anadir_descripcion();  } } );
Ya que cuando pulso enter en el input descripcion va a la función anadir_descricpción.

El problema que comenté inicialmente es que me insertaba varias veces, pensé que podría ser un mal uso de ajax,

Ahora veo que solo sucede al llamar la función desde el código que he pasado (haciendo intro).

SAludos

Etiquetas: ajax
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 04:15.