Foros del Web » Programando para Internet » Javascript »

Problema con los checkbox a la hora de enviar los datos

Estas en el tema de Problema con los checkbox a la hora de enviar los datos en el foro de Javascript en Foros del Web. Bien, resulta que estoy haciendo una pagina web con PHP y AJAX y claro cargo un formulario en un div de la web con ajax ...
  #1 (permalink)  
Antiguo 06/04/2006, 10:59
 
Fecha de Ingreso: enero-2005
Mensajes: 115
Antigüedad: 19 años, 3 meses
Puntos: 1
Problema con los checkbox a la hora de enviar los datos

Bien, resulta que estoy haciendo una pagina web con PHP y AJAX y claro cargo un formulario en un div de la web con ajax y quiero enviar los datos a la misma pagina pero con ajax tambien para que solo se tenga que cargar ese div de la web. Pues el problema es que no logro hacer que el array con los checkbox pasen. Os pongo un resumen del codigo, a ver si me podeis ayudar:
pagina.php

<?php
...
echo '<html><head>';
echo '<script src="./scripts/ajax.js" language="JavaScript"></script>';
echo '</head><body>';
...
echo '<form name="cargarDatos" method="get">';
echo '<input type="checkbox" onclick="seleccionarTodos(this.form,this.checked); " name="todos" value="1" title="Select all">Selecionar todo<br>';
foreach( .... ){
...
echo '<input type="checkbox" name="lista[]" value="'.urlencode($dirname.$filename).'">';
...
echo '<a href="javascript:;" target="_top" onclick="guardarArchivos(\''.$_SERVER['PHP_SELF'].'\')" title="Save"><span class="letra_estandard_b"><img src="./imagenes/ok.gif" border="0" align="absmiddle">&nbsp;Save the selected files in the Data Base</span></a>';
echo '</form>';
}
...
?>

ajax.js
....
function guardarArchivos(urldestino){
if(urldestino==''){
return;
}
var resto = new Array();
var c = 0;
for (i = 0; i < document.cargarDatos.elements.length; i++){
if(document.cargarDatos.elements[i].type=="checkbox" && document.cargarDatos.elements[i].checked){
resto[c]=document.cargarDatos.elements[i].value;
c++;
}
}
if(c==0){
alert("Debe seleccionar algun archivo");
return;
}else{
/*for(i=0;i<resto.length; i++)
alert(resto[i]);*/
cargaXML(urldestino+"?lista="+resto);
}
}
...


Bien lo que sucede es que aunque la funcion guardarArchivo en el alert comentado abajo de todo muestra correctamente los valores almacenados que en este caso son cadenas del tipo:

C%3A%2FEsto%2Fes%2Fun%2Fejemplo%2Farchivo.jpg

Cuando hago cargaXML(urldestino+"?lista="+resto); no se si estoy metiendo bien la matriz o como tendria que hacer para que la matriz se pasase como en un formulario corriente por GET.
Cuando recogo esa urldestino?lista=... solo me muestra un caracter almacenado en ella la c en este caso, correspondiente al primer caracter de la cadena.
Alguno sabe como hacer para poder pasar una matriz con javascript igual que si fuera una matriz de un formulario normal y corriente.

Espero haberme explicado bien, y gracias por la ayuda.
__________________
SaRvErOk :ojotes:
  #2 (permalink)  
Antiguo 06/04/2006, 11:32
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola sarverok007:

No estoy seguro de que sea lo que quieres pero creo que tendrías que escapar el resto...

cargaXML(urldestino+"?lista=" + escape(resto));

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 06/04/2006, 11:35
 
Fecha de Ingreso: enero-2005
Mensajes: 115
Antigüedad: 19 años, 3 meses
Puntos: 1
Hay un problema, lo que sucede es que no puedo escapar una matriz!!! entodo caso podria escapar un string.
__________________
SaRvErOk :ojotes:
  #4 (permalink)  
Antiguo 06/04/2006, 11:41
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Bueno:

¿Lo has probado...?

Es que si muestras un array sin más lo suele convertir automáticamente a una cadena...

También puedes usar el método de objetos genéricos toString()... Y si no te sirve lo puedes convertir con join...

var unaCadena = unArray.join(",");

Pruébalo y nos comentas los resultados.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 19:43.