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

Recuperar un array php desde Ajax

Estas en el tema de Recuperar un array php desde Ajax en el foro de Frameworks JS en Foros del Web. Es visto que este problema lo han tenido varios pero no se hasta ahora como se puede solucionar pero pienso que si se puede porque ...
  #1 (permalink)  
Antiguo 16/06/2006, 22:41
Avatar de juanca2626  
Fecha de Ingreso: junio-2004
Ubicación: Lima-Peru
Mensajes: 67
Antigüedad: 19 años, 10 meses
Puntos: 0
Recuperar un array php desde Ajax

Es visto que este problema lo han tenido varios pero no se hasta ahora como se puede solucionar pero pienso que si se puede porque ya e visto que lo hacen utilizando JSON pero no logro ejecutar nada no se si alguien ya soluciono esto ya sea con JSON o como sea pero que me digan como lo han echo..

El problema es que cuando ajax hace una consulta a la base de datos este le devuelve un conjunto de registros por filas pueden haber varias filas como tantas columnas, que los meto a un array.

while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
$datos[]=$line;
}


lo que quiero es que ajax recoja este array $datos; y lo recorra desde la pagina de ajax .
datos = eval(t.responseText);

y que le aga un :

for (var i=0; i < datos.length; i++) {

}

y lo envie a donde quiera la cosa es que no logro atrapar ese arreglo desde ajax
JSON es lo unico que encontre pero no logro correrlo no se que pueda pasar


los genios del foro quizas me puedan ayudar .....
  #2 (permalink)  
Antiguo 17/06/2006, 16:37
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
yo lo haria con XML..
__________________
Internet Explorer SuckS
Download FireFox
  #3 (permalink)  
Antiguo 17/06/2006, 19:01
Avatar de yiyocastro  
Fecha de Ingreso: octubre-2004
Ubicación: Maracaibo, Venezuela
Mensajes: 314
Antigüedad: 19 años, 6 meses
Puntos: 0
hola,

puedes hacer una cadena análoga y luego digitalizandola con split.

Es decir, el responseText será una cadena.. Supongamos:

1$Uno;2$Dos;3$Tres

Aquí puedes observar 2 delimitadores que forman una matriz o array bidimensional:

1 Uno
2 Dos
3 Tres

El "$" y ";" dividen la matriz. En este caso. Pude decir que "$" dividia las columnas y ";" las filas.

Suerte. Saludos.
__________________
Nada es verdad, nada es mentira, todo esta en el cristal con que lo miras. :si:
  #4 (permalink)  
Antiguo 17/06/2006, 20:03
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
eso es una negrada cuando no sabes que caracteres vas a recibir, si el texto tiene un ";" o un "$" que pasa??..
__________________
Internet Explorer SuckS
Download FireFox
  #5 (permalink)  
Antiguo 17/06/2006, 20:12
Avatar de yiyocastro  
Fecha de Ingreso: octubre-2004
Ubicación: Maracaibo, Venezuela
Mensajes: 314
Antigüedad: 19 años, 6 meses
Puntos: 0
Pero si tu mismo te estas enviando el formato de la matriz, por logica te auto-determinas tus parametros para reconstruirla. Si sabes que dentro de tu texto aparecen "$" concurrentemente, entonces DEBERÁS formarte en otros delimitadores, recordemos que la funcion "split", te permite partir cualquier cadena de acuerdo al delimitador que tu asignes.

saludos.
__________________
Nada es verdad, nada es mentira, todo esta en el cristal con que lo miras. :si:
  #6 (permalink)  
Antiguo 18/06/2006, 01:18
Avatar de juanca2626  
Fecha de Ingreso: junio-2004
Ubicación: Lima-Peru
Mensajes: 67
Antigüedad: 19 años, 10 meses
Puntos: 0
Solucion

Interesantes las respuestas pero encontre una solucion yo solo pero los comparto para todos ok

Fue un dolor de cabeza pero les doy la idea para que no las tienen clara en esto ok

la idea no es devolverle un arrar de php a AJAX

sino devolverle una cadena que tu lo puedas describir con un array en javascript me dejo entender, se las pongo mas claro ok
ejemplo :

$javascrip='
var datos=new Array(2);
datos[0]=new Array(3);datos[1]=new Array(3);

datos[0][0]=" malo1"
datos[0][1]=" malo2"
datos[0][2]=" malo3"
datos[1][0]=" malo4"
datos[1][1]=" malo5"
datos[1][2]=" malo6"

';

echo $javascrip ;
esta es la forma como debes de botar en php ok

y en la pagina donde tienes el ajax ....


hacerle solo esto

eval(http.responseText);


al hacer esto ya tienes la matriz capturada en tu pagina donde tienen AJAX


es como si lo ubices pasado no mas

ok
ya a esto ya pes solo lo recorres y lo colocas donde quieran ok


espero haber aportado algo

ok

si tienen mas dudas me lo dicen haber si les pudo ayudar ok

nos vemossssss


Siempre miren hacia adelante nunca haci atras
  #7 (permalink)  
Antiguo 18/06/2006, 18:43
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
es preferible usar XML

despues de todo eso es AJAXml
  #8 (permalink)  
Antiguo 18/06/2006, 19:01
Avatar de juanca2626  
Fecha de Ingreso: junio-2004
Ubicación: Lima-Peru
Mensajes: 67
Antigüedad: 19 años, 10 meses
Puntos: 0
Xml??

No tengo ni idea de como hacerlo con XML recien estoy dando mis primeros paso

si me alcanzas alguna pagina o un codigo no se, de como hacerlo te lo agradece

pero de como pasar el array php a AJAX , me supongo que sera lo mismo que hice con javascript
gererar un XML con php con las filas y columnas

la cosa es como saber como lo recorro desde ajax ni idea de eso y como crear la extructura de XML

gracias por las sugerencia STOCK......
  #9 (permalink)  
Antiguo 19/06/2006, 05:34
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años
Puntos: 3
Dejalo como está ya has encontrado una solucion valida no es necesario que te compliques.

De todas formas para futuros yo no te aconsejo usar JSON. Porque?

Supongamos que tienes un portal donde su media de usuarios conectados es de 10000 (que las hay) eso como debes saber es una gran carga para el servidor. Pues bien si tu tienes que pasar datos mediante ajax y lo haces con JSON, necesitas de alguna libreria o script en php que todo tu array lo pase a un formato legible. Eso se traduce en bucles, expresiones regulares, comparaciones, muchas variables... Es decir procesos que yo veo innecesarios. Sin embargo si lo haces con XML solo necesitas un bucle para recorrer tus datos y una vez descargado con AJAX solo tienes que recoger los datos con JavaScript (tarea facil si usas isiXML).
Entonces si te pones a pensar no es lo mismo que ese proceso de recogida de datos lo haga el navegador individual de esos 10000 usuarios que no supone nada, a que el servidor tenga que hacer los 10000 procesos para servir a los usuarios. No se si me explico, a lo que quiero llegar es que la optimizacion de recursos es mucho mejor usando XML.

Saludos.
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #10 (permalink)  
Antiguo 19/06/2006, 09:24
Avatar de SiR.CARAJ0DIDA  
Fecha de Ingreso: junio-2004
Ubicación: Acá
Mensajes: 1.166
Antigüedad: 19 años, 10 meses
Puntos: 4
ademas la funcion eval() es muy lenta
__________________
Internet Explorer SuckS
Download FireFox
  #11 (permalink)  
Antiguo 19/06/2006, 16:50
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años
Puntos: 3
Si pero bueno eso es lo de menos, los procesos de lado de cliente no supone nada. La cuestion es ahorrarle al servidor todo el trabajo posible. Si tienes la opcion de elegir hacer una cosa en el servidor o en el cliente. Elige siempre el cliente.
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #12 (permalink)  
Antiguo 19/06/2006, 17:58
Avatar de xknown  
Fecha de Ingreso: diciembre-2004
Ubicación: Cusco - Perú
Mensajes: 2.248
Antigüedad: 19 años, 3 meses
Puntos: 7
Cita:
Iniciado por NzO
Si pero bueno eso es lo de menos, los procesos de lado de cliente no supone nada. La cuestion es ahorrarle al servidor todo el trabajo posible. Si tienes la opcion de elegir hacer una cosa en el servidor o en el cliente. Elige siempre el cliente.
No se aplica en todos los casos (Ej. confiar la validación de datos en el cliente).

Saludos
__________________
Alex Concha
Buayacorp - Programación y Diseño
  #13 (permalink)  
Antiguo 20/06/2006, 02:32
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años
Puntos: 3
Cita:
No se aplica en todos los casos (Ej. confiar la validación de datos en el cliente).
En temas de seguridad es otra historia, sobre todo validacion. Siempre lo tienes que hacer del lado de servidor.

Pero mucha gente comete el error de hacerlo solo del lado de servidor. Lo mejor es hacerlo de cliente y luego de servidor.

Por ejem: Si el usuario se equivoca y en vez de meter 4 caracteres a su password pone 3, para que necesitamos recargar la web. Se hace con JS. Y en el caso de que dicho usuario tenga el JS desactivado ya tendra que validar el servidor sin mas remedio.

Hay cosas que no se puede hacer en JS. Como saber si el email introducido esta repetido. O si el nick elegido tmb esta repetido... Para todo lo demas JS
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #14 (permalink)  
Antiguo 20/06/2006, 09:47
Avatar de stock  
Fecha de Ingreso: junio-2004
Ubicación: Monterrey NL
Mensajes: 2.390
Antigüedad: 19 años, 10 meses
Puntos: 53
mmmmm, bueno, regresando al tema! no es muy complejo parsear el XML, claro una vez tienes en claro algunos conceptos, y si como te aconseje hace rato, lo mejor es usar XML para el intercambio de indormacion, recuerda que AJAX sigue una arquitectura SOAP, soooooo hay que tratar de seguir los estandares para desarrollar software de calidad.....

te han aconsejado usar el isiAjax para recibir el XML del servidor, deberias checarlo y si te sirve y se adapta facilmente a tu proyecto, pues adelante, la verdad yo no lo e visto en accion, perooo, se escucha interesante.....

have funnnnn
  #15 (permalink)  
Antiguo 20/06/2006, 21:46
Avatar de juanca2626  
Fecha de Ingreso: junio-2004
Ubicación: Lima-Peru
Mensajes: 67
Antigüedad: 19 años, 10 meses
Puntos: 0
Gracias

Gracias a todos por sus aportes vere de que se trata isiXML haber si me ayuda a simplificar mi codigo que al guerrazo lo aplique de ajax
quiero crear extructuras , para que despues lo llame de mis paginas

ok


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 08:41.