Foros del Web » Programando para Internet » Javascript »

Ajax - Recibir muchos datos

Estas en el tema de Ajax - Recibir muchos datos en el foro de Javascript en Foros del Web. Buenas tardes, tengo el siguiente problema y querría que me ayudaran. Arme una pagina para modificación de datos de proveedores. Cuando el usuario selecciona código, ...
  #1 (permalink)  
Antiguo 26/12/2014, 15:57
 
Fecha de Ingreso: julio-2010
Mensajes: 70
Antigüedad: 13 años, 9 meses
Puntos: 0
Ajax - Recibir muchos datos

Buenas tardes, tengo el siguiente problema y querría que me ayudaran.
Arme una pagina para modificación de datos de proveedores. Cuando el usuario selecciona código, mediante ajax, deben aparecer los datos en cada uno de los input correspondientes para ser modificados.
La consulta a la base de datos devuelve un string que está formado por Codigo + | + RazonSocial + | + Direccion + Contacto, etc, o sea, los campos de la tabla separados por el caracter "|".
En la funcion javascript hago un split asi :
var texto = ajax.responseText y luego
var res = texto.split("|");

Por lo que tengo entendido, res es un vector que tiene todos los valores que coloque en el echo de la consulta a labase de datos.
Hasta aqui parecería funcionar todo bien porque cuando hago un alert(res) y un alert(res[0]) o alert(res[4]) me muestra los valores correctos en pantalla.

El problema se me presenta cuando quiero reemplazar esos valores en los elementos del formulario usando innerHTML.

Son 15 elementos manejados todo de la misma forma, por ejemplo,

(document.getElementById('RazonSocial').innerHTML = res[2];

pero solamente me muestra el ultimo valor, es decir cuando asigno el res[15]. En este ultimo elemento funciona perfectamente

Me podrán ayudar diciendome en donde me estoy equivocando ?

Gracias por adelantado.
Juan Carlos
  #2 (permalink)  
Antiguo 26/12/2014, 17:21
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Ajax - Recibir muchos datos

Hola:

Por casualidad, ese último elemento es un "textarea"...

¡Verás!, normalmente los controles de los formularios se chequean/actualizan desde el atributo value, y no aceptan cosas dentro de la etiqueta (innerHTML)...

Como respuesta genérica a la pregunta (sin su desarrollo), puedes obtener muchos datos y variados en formato XML.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 26/12/2014, 17:30
 
Fecha de Ingreso: julio-2010
Mensajes: 70
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: Ajax - Recibir muchos datos

Muchas gracias por la rápida respuesta. Efectivamente, el ultimo elemento es un textarea con lo que no me queda otra opción que tomar los datos en formato xml, para lo cual primero de todo, voy a intentar conocer algo del tema.
Gracias de nuevo
JC
  #4 (permalink)  
Antiguo 26/12/2014, 17:42
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Ajax - Recibir muchos datos

Hola:

Aunque creo recomendable el formato xml, tal vez solo necesites cambiar el innerHTML por el value...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 26/12/2014, 18:03
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 - Recibir muchos datos

Como otra alternativa, puedes devolver un array parseado como objeto JSON desde el lado del servidor e iterarlo en tu script JS con cualquier bucle.

En tu archivo PHP (si ese fuera el caso):
Código PHP:
Ver original
  1. // Datos de ejemplo
  2. $dato1 = 'Foo';
  3. $dato2 = 'Bar';
  4. $dato3 = 'Bin';
  5.  
  6. $tuArray = array($dato1, $dato2, $dato3);
  7.  
  8. echo json_encode($tuArray);

En tu archivo JS:
Código Javascript:
Ver original
  1. //Suponiendo que tu objeto XMLHttpRequest (Ajax) se llame 'xhr'
  2. if (xhr.readyState == 4 && xhr.status == 200){
  3.     var objeto = JSON.parse(xhr.responseText), //El objeto con los datos
  4.         total = objeto.length, i,
  5.         elementos = ["id1", "id2", "id3"]; //Los ID de los elementos del formulario
  6.  
  7.     for (i = 0; i < total; i++){
  8.         document.getElementById(elementos[i]).value = objeto[i];
  9.     }
  10. }

De esta forma, primero, formas un array en el archivo PHP con los datos obtenidos (que supongo los tienes en una BD), lo parseas a JSON y lo imprimes, esa respuesta se recibe en el archivo JS (lado del cliente), lo parseas como JSON para poder iterarlo (ya que originalmente recibes texto plano), formas un array con los ID de los elementos del formulario en los cuales deseas añadir los valores obtenidos y, con ayuda de un bucle, los vas añadiendo uno por uno. También puedes tomar directamente a todos los elementos del formulario e iterar sobre dicho conjunto, es solo una alternativa más.

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

Última edición por Alexis88; 26/12/2014 a las 22:06 Razón: Enlace

Etiquetas: ajax, input, split
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:07.