Foros del Web » Programando para Internet » PHP »

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 PHP 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, 11:19
 
Fecha de Ingreso: enero-2005
Mensajes: 115
Antigüedad: 12 años, 11 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, 15:02
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 13 años, 9 meses
Puntos: 78
Probaste urlcode y urldecode ?

http://www.php.net/manual/es/function.urldecode.php
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #3 (permalink)  
Antiguo 06/04/2006, 16:35
 
Fecha de Ingreso: enero-2005
Mensajes: 115
Antigüedad: 12 años, 11 meses
Puntos: 1
Desacuerdo

Si ya esta solucionado, el problema no era ese, simplemente tube que construir la cadena manualmente. Ahora tengo otro problema y es que aveces la cadena es tan larga que no coge entera, me explico:
puede ser que la cadena sea tan larga que el navegador la corte???? aveces tengo que pasar tanta informacion que parece como si el navegador cortase la cadena que se le pasa por get al ser demasiado larga, es posible???
y si es asi como solucionarlo
__________________
SaRvErOk :ojotes:
  #4 (permalink)  
Antiguo 06/04/2006, 18:21
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 13 años, 9 meses
Puntos: 78
Ufa no recuerdo cuanto es el largo de una cadena y no te quiero mentir pero intenta con POST a ver si funciona o necesitas que sea por URL ?
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #5 (permalink)  
Antiguo 07/04/2006, 03:14
 
Fecha de Ingreso: enero-2005
Mensajes: 115
Antigüedad: 12 años, 11 meses
Puntos: 1
Exclamación Me explico un poco mejor, a ver si me ayudais a solucionarlo

Creo que necesito que sea por URL por que utilizo AJAX para cargar tanto el formulario como la pagina resultante del formulario asi pues el codigo es algo asi:
<?php
...
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="cargaConAJAX(\''.$_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>';
...
?>

Y entonces dentro de esa funcion cargaConAjax lo que hago es montar la URL como quedaria si fuera un botton submit normal, es decir, monto todas las bariables tipo ?array[]=cadena1&array[]=cadena2&array[]=cadena3 .....
Pero el problema es que me han dicho que con GET solo se pueden pasar unos 1024 caracteres no mas, y yo necesito que no exista este limite, pues aveces no lo sobrepaso y aveces si, x k "cadenaX" es el path que identifica univocamente a un fichero en mi disco duro, y tengo que pasarle todo sino no me sirve de nada.
No se si hay alguna funcion en javascript para pasar una cadena por POST
Sabeis cual es el limite del POST? Tiene limite???
Puedo utilizar variables de globales o de session? (Solo me teneis que indicar como asignar a una variable de session el valor de los checkbox de mi formulario y entonces ya esta porque una variable de session puede ser una matriz sin problemas)
Espero haberme explicado bien, gracias por la colaboracion!!!!!!!!!
__________________
SaRvErOk :ojotes:
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 03:47.