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

pasar array

Estas en el tema de pasar array en el foro de Frameworks JS en Foros del Web. Hola a Tod@s. Tengo un formulario que reune los datos de los ficheros que se subirian al server, como no se cuantos archivos van a ...
  #1 (permalink)  
Antiguo 27/06/2006, 07:20
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 3 meses
Puntos: 0
Pregunta pasar array

Hola a Tod@s.
Tengo un formulario que reune los datos de los ficheros que se subirian al server, como no se cuantos archivos van a subir, ya que seleccionan los archivos en un paso previo los "introduzco" en un array que genero con PHP
Quedaria mas o menos así
Código HTML:
<form enctype="multipart/form-data"  name="form" method="POST">

<input name="file[]" type="file" id="foto">
<input name="file[]" type="file" id="foto">
<input name="file[]" type="file" id="foto">
<input name="file[]" type="file" id="foto">

</form> 
El problema es que no se dcomo pasar este array a traves de ajax para que a su vez llame a una pagina de PHP y lo procese

he tratado de pasarlo así, siendo file el array pero no pasa nada
Código HTML:
request.open("POST", "upload.php?id="+id+"&numero_entradas="+numero_entradas+"&file="+file,true);
los demas valores Si.
Me podriais hechar una mano?
Gracias
Un Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #2 (permalink)  
Antiguo 27/06/2006, 07:28
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 18 años, 11 meses
Puntos: 2
Puedes transformar el array en un string, y al contrario con estas funciones:

Código PHP:

                   
function encodeArray($vector){
        
$vector serialize($vector);
        
$vector urlencode($vector);
        return 
$vector;
    }

    function 
decodeArray($vector){
        
$vector stripslashes($vector);
        
$vector urldecode($vector);
        
$vector unserialize($vector); 
        return 
$vector;
    } 
Para mas informacion http://es2.php.net/serialize, http://es2.php.net/urlencode y http://es2.php.net/stripslashes
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #3 (permalink)  
Antiguo 27/06/2006, 10:28
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 21 años, 11 meses
Puntos: 6
La solucion es pasarle los valores de cada array
por ejemplo en el get o post deberias ponerle

&file[]=file1&file[]=file2&file[]=file3

asi sucesivamente cuando quieras mandar un array.
Pero en tu caso por lo que lei en otros lados, es imposible mandar un file con AJAX

Suerte
__________________
"Vivir....solo cuesta Vida"
  #4 (permalink)  
Antiguo 27/06/2006, 11:33
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 3 meses
Puntos: 0
Gracias oskarL por tu sugerencia, peroo...
Recuerda que el PHP se ejecuta en el server y yo los "datos" los tengo en un formulario que quiero pasar a traves de Ajax al server, en este punto es donde radica el problema.
Gracias lalogrosz tambien a ti por tu respuesta pero como comentaba no se el numero de archivos que se pueden enviar en un momento dado, por tanto ¿cuantos pongo de la forma que tu me dices?
Imposible no creo que sea (lo malo es el no saber como).
A mi se me ocurre que se podia hacer (si se sabe) una funcion que previamente al en vio del formulario contase los "file" y los "uniese" de la forma var cadena=file[0]&file[1]&file[2]...etc. y pasar cadena como una sola variable y posterior mente llamase ajax.
Si alguien se anima o lo ve factible se lo agradeceria.
Gracias a los dos por vuestro interes
Un cordial Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #5 (permalink)  
Antiguo 27/06/2006, 11:53
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 21 años, 11 meses
Puntos: 6
Lo que podes hacer es con un for armarte el string, por ejemplo.

Código:
var  campoMultiple = document.forms.NombreFormulario["campoMultiple[]"];

for(i=0;i<campoMultiple.length;i++){
 
      strCadena += "&campoMultiple[]="+campoMultiple[i].value; 
}
Fijate si con eso te sirve para armar el string. Si te salta algun error, quizas me comi algo, pero la idea es esa. Recorrer todos los campos del mismo nombre para poner los valores bajo el mismo parametro. En tu caso seria file[], pero como te dije antes, creo que no es posible subir archivos a traves de ajax. Pero si te llega a funcionar, avisame!!

Suerte
__________________
"Vivir....solo cuesta Vida"
  #6 (permalink)  
Antiguo 27/06/2006, 13:52
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
loading...............


Yo creo que lo mejor para pasar datos en array es usar JSON (Javascript Object Notation) tienes un tutorial ac'a:

http://www.json.org/js.html

con esto puedes serializar tu array y para parsearlo en el servidor en este PHP

http://freshmeat.net/projects/json_php_package/


si pasas de esto puedes pasarle al servidor un XML y parsearlo, es lo mismo.

la era de los string separados por comas simulando un array pas'o a la historia.

connection closed.
__________________

Maborak Technologies
  #7 (permalink)  
Antiguo 27/06/2006, 15:28
foo
 
Fecha de Ingreso: febrero-2006
Mensajes: 278
Antigüedad: 18 años, 2 meses
Puntos: 0
Cita:
Iniciado por Torus
Gracias oskarL por tu sugerencia, peroo...
Recuerda que el PHP se ejecuta en el server y yo los "datos" los tengo en un formulario que quiero pasar a traves de Ajax al server, en este punto es donde radica el problema.
Gracias lalogrosz tambien a ti por tu respuesta pero como comentaba no se el numero de archivos que se pueden enviar en un momento dado, por tanto ¿cuantos pongo de la forma que tu me dices?
Imposible no creo que sea (lo malo es el no saber como).
A mi se me ocurre que se podia hacer (si se sabe) una funcion que previamente al en vio del formulario contase los "file" y los "uniese" de la forma var cadena=file[0]&file[1]&file[2]...etc. y pasar cadena como una sola variable y posterior mente llamase ajax.
Si alguien se anima o lo ve factible se lo agradeceria.
Gracias a los dos por vuestro interes
Un cordial Saludo
Como ya te mencionaron, con ajax NO se puede subir archivos, si no me crees sería interesante que te fijes el tráfico HTTP cuando subes un archivo de la manera convencional.
  #8 (permalink)  
Antiguo 28/06/2006, 01:25
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 18 años, 11 meses
Puntos: 2
Cita:
Iniciado por Torus
Recuerda que el PHP se ejecuta en el server y yo los "datos" los tengo en un formulario que quiero pasar a traves de Ajax al server

Perdon! se me fue la olla, jeje, te puse un codigo de PHP, que por supuesto te sirvio de poco :p De todas formas la idea inicial la mantengo.

Estoy seguro que existe alguna manera en JavaScript de pasar un array a un string, y de este modo solo tendrias que pasar un parametro.

Creo que he encontrao algo, no estoy muy seguro, porque no lo he mirado a fondo, pero ahi lo dejo http://www.devpro.it/javascript_id_102.html
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #9 (permalink)  
Antiguo 29/06/2006, 09:48
Avatar de Torus  
Fecha de Ingreso: enero-2002
Ubicación: Tú buscame y me encontraras
Mensajes: 413
Antigüedad: 22 años, 3 meses
Puntos: 0
Cita:
Como ya te mencionaron, con ajax NO se puede subir archivos, si no me crees sería interesante que te fijes el tráfico HTTP cuando subes un archivo de la manera convencional.
Hola foo, quiza me explique mal.
No pretendo subir archivos con ajax => Solo enviarle el array.
La subida la realizará una clase en php llamada con los datos que se le pasen a traves de ajax.
Lo que sucede es que son varios arrays.
He tirado por la calle del medio y el sistema de upload lo he realizado con php y el resto con ajax.
Gracias por vuestro interes
Un cordial Saludo
__________________
Hay tanto que aprender y tan poco tiempo
  #10 (permalink)  
Antiguo 08/11/2007, 14:41
 
Fecha de Ingreso: octubre-2007
Mensajes: 2
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: pasar array

Hola Torus, escucha, la verdad que lo que queres hacer es un dolor de bolas ya me ha pasado en varias oportunidades, querer pasar un Vector o un Array de JavaScript a PHP por medio de AJAX. Lo he resuelto en todos los casos, de la siguiente manera:
Seguro pasas los datos al Server para realizar una consulta a la BD, lo que yo hago y funciona de lujo, no se tu caso, es ir armando la consulta SQL del lado del cliente, en el mismo JavaScript. O sea en vez de ir llenando un Array o lo que fuere vas agregando los datos al string de sql...
O sea dentro del bucle que vas llenando el array, pone sql=sql+" loque sea"
donde peviamente definis sql con la consulta hasta las conduciones de búsqueda.. y en el bucle te armas un variable con lo que falta del String de la consulta y tambien le vas agregando los datos que vas recolectando del formulario...
y Luego por ajax pasas el parametro sql que es un string con la sentencia ya armada lista para hacer la consulta.......
Espero te sirva!
Saludos.
  #11 (permalink)  
Antiguo 08/11/2007, 14:48
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 21 años, 11 meses
Puntos: 6
Re: pasar array

Cita:
Iniciado por cilcobich Ver Mensaje
Hola Torus, escucha, la verdad que lo que queres hacer es un dolor de bolas ya me ha pasado en varias oportunidades, querer pasar un Vector o un Array de JavaScript a PHP por medio de AJAX. Lo he resuelto en todos los casos, de la siguiente manera:
Seguro pasas los datos al Server para realizar una consulta a la BD, lo que yo hago y funciona de lujo, no se tu caso, es ir armando la consulta SQL del lado del cliente, en el mismo JavaScript. O sea en vez de ir llenando un Array o lo que fuere vas agregando los datos al string de sql...
O sea dentro del bucle que vas llenando el array, pone sql=sql+" loque sea"
donde peviamente definis sql con la consulta hasta las conduciones de búsqueda.. y en el bucle te armas un variable con lo que falta del String de la consulta y tambien le vas agregando los datos que vas recolectando del formulario...
y Luego por ajax pasas el parametro sql que es un string con la sentencia ya armada lista para hacer la consulta.......
Espero te sirva!
Saludos.
Me parece una solucion con bugs de seguridad hacer algo asi desde el cliente.
La mejor opcion es armarte como te dije anteriormente el array o bien como dijeron tambien, mandar un JSON, donde luego podes tomarlo con PHP facilmente.
Saludos.
__________________
"Vivir....solo cuesta Vida"
  #12 (permalink)  
Antiguo 09/11/2007, 10:16
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Re: pasar array

loading...........


Nadie vio los links de JSON ? es exclusivamente para estos casos.. envio de array/objetos de javascript a php u otro server... lo que se hace es simplemente convertir los objetos o arrays en una tabla de dispersión (cadena de texto).

Y no puedes enviar archivos con el objeto XMLHttpobject, NO SIGAN INTENTANDOLO. Pero sí puedes hacerlo con un IFRAME..


connection closed.
__________________

Maborak Technologies
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:24.