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

Pasar un vector de un archivo JS a uno PHP

Estas en el tema de Pasar un vector de un archivo JS a uno PHP en el foro de Frameworks JS en Foros del Web. Saludos a todos. Veréis, estoy desarroyando una aplicación de reserva de habitaciones con AJAX y me he encontrado un problema. En principio, la aplicación tiene ...
  #1 (permalink)  
Antiguo 31/03/2009, 04:30
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Pasar un vector de un archivo JS a uno PHP

Saludos a todos.

Veréis, estoy desarroyando una aplicación de reserva de habitaciones con AJAX y me he encontrado un problema.

En principio, la aplicación tiene un desplegable (el número de habitaciones que se van a reservar) y en función de este, desplega otros dos por cada habitación seleccionada (el número de adultos y de niños por habitación)

Yo lo que quería era hacer dos vectores, uno con el número de adultos (por habitación) y el otro con el número de niños.

Los vectores los relleno así. (Os pongo una simplificación del script original)

Código javascript:
Ver original
  1. for (x = 0; x <= ob_3.value; x++)
  2. {
  3.     ob_4[x] = document.getElementById("name_attendee_" + x + "_a");
  4.     ob_5[x] = document.getElementById("name_attendee_" + x + "_b");
  5. }
  6.  
  7. var a_php = "";
  8. var total = 0;
  9.  
  10. for (var key in ob_4)
  11. {
  12.     ++ total;
  13.     a_php = a_php + "s:" +
  14.         String(key).length + ":\"" + String(key) + "\";s:" +
  15.         String(ob_4[key]).length + ":\"" + String(ob_4[key]) + "\";";
  16. }
  17.  
  18. a_php = "a:" + total + ":{" + a_php + "}";
  19.  
  20. var b_php = "";
  21. var total = 0;
  22.  
  23. for (var key in ob_5)
  24. {
  25.     ++ total;
  26.     b_php = b_php + "s:" +
  27.         String(key).length + ":\"" + String(key) + "\";s:" +
  28.         String(ob_5[key]).length + ":\"" + String(ob_5[key]) + "\";";
  29. }
  30.  
  31. b_php = "b:" + total + ":{" + b_php + "}";

Después, los envío por GET.

Código javascript:
Ver original
  1. ajax.open ("GET", "php/query2.php?a_php=" + a_php + "&b_php=" + b_php, true);

Al llegar al script php (query2.php) los tomo así:

Código php:
Ver original
  1. $my_arr_a = unserialize(urldecode(stripslashes($_GET["a_php"])));
  2. $my_arr_b = unserialize(urldecode(stripslashes($_GET["b_php"])));

Pero al hacer un print_r sobre ellos, me salen vacíos (cuando no debería ser así)

El caso es que soy bastante novato tanto en AJAX (es mi primer proyecto) como en Javascript (con el que nunca me he llevado del todo bien) con lo que entiendo que es muy probable que esté creando mal el array en Javascript, pero sigo sin ver de qué manera.

Si alguien pudiese echarme una mano se lo agradecería.

Un saludo.
  #2 (permalink)  
Antiguo 31/03/2009, 05:58
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

No te compliques tanto.

Supongamos que tienes los valores de adultos y niños en los arrays ya metidos, ok? Para el ejemplo lo pongo así:

Código javascript:
Ver original
  1. var adultos = [2,1,2,0,0];
  2. var hijos = [1,0,0,2,2];
Ahora, para enviarlos prepáralos únicamente haciendo esto:

Código javascript:
Ver original
  1. ajax.open ("GET",
  2.            "php/query2.php?adultos=" + adultos.join("/") + "&hijos=" + hijos.join("/"),
  3.            true);

Haciendo eso lo que estás enviando es:
Código:
?adultos=2/1/2/0/0&hijos=1/0/0/2/2
Así que luego en PHP, para leerlos lo único que necesitas hacer es:

Código php:
Ver original
  1. $adultos = split("/",$_GET["a_php"]);
  2. $hijos = split("/",$_GET["b_php"]);

(También sería bueno revisar los arrays para comprobar que los datos son buenos y esas cosas, claro)
  #3 (permalink)  
Antiguo 31/03/2009, 10:44
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Pasar un vector de un archivo JS a uno PHP

O usar json para enviar los valores como un objeto, y rescatarlos en php y usar json_decode.

Saludos.
  #4 (permalink)  
Antiguo 01/04/2009, 02:00
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Bueno, siguiendo el consejo de GatorV he optado por hacerlo con JSON... (Ya que estamos aprendiendo AJAX, sigamos aprendiendo aunque cueste un poco más llevarlo a cabo...) Y ni que decir tiene que decidir hacerlo con JSON ya ha empezado a darme problemas.

Para empezar, los datos que tengo que tomar son en función de un desplegable, y debido a mi poco dominio de Javascript no sé si estoy tomando los valores correctamente.

Así es como lleno el vector.

Código javascript:
Ver original
  1. for (x = 0; x <= ob_3.value; x++)
  2. {
  3.     ob_4[x] = document.getElementById("name_attendee_" + x + "_a");
  4.     ob_5[x] = document.getElementById("name_attendee_" + x + "_b");
  5. }
  6.  
  7. arr_a = "[";
  8.  
  9. for (x2 = 0; x2 <= ob_4.length; x2 ++)
  10. {
  11.     arr_a = arr_a + "{num_hab:'" + x2 + "',num_ad:'" + ob_4[x2].value + "'}"
  12. }
  13.  
  14. arr_a = arr_a + "]";
  15.  
  16. ajax.open ("GET", "php/query2.php?a_php=" + arr_a, true);

Luego, en PHP, tomo el vector y lo proceso de este modo:

Código php:
Ver original
  1. $valores = stripslashes($_GET['a_php']);
  2. $decoded = json_decode($valores,true);
  3.  
  4. print_r ($decoded)

Pero no me muestra ni un miserable Array()

Y el caso es que no tengo claro si tengo el error al llenar el array, o si por el contrario, lo tengo al visualizarlo en PHP.

¿Alguien sabría echarme una mano?


Muchas gracias a todos por vuestro tiempo y un saludo.

Última edición por Koden; 01/04/2009 a las 02:05 Razón: Añadir más datos que se me quedaron en el tintero. (x2)
  #5 (permalink)  
Antiguo 01/04/2009, 02:51
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

Cada elemento del array debe ir separado por comas. Es decir, tienes que construirlo así:

[{num_hab:0,num_ad:1}, {num_hab:1,num_ad:2}, {num_hab:2,num_ad:1}]

Te están faltando esas comas.
  #6 (permalink)  
Antiguo 06/04/2009, 03:15
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Saludos a todos.

He sustituído al final el script por este otro (gracias a todos por vuestras colaboraciones) pero sigue sin funcionarme.

Código Javascript:
Ver original
  1. for (x = 0; x <= ob_3.value; x++)
  2. {
  3.           ob_4[x] = document.getElementById("name_attendee_" + x + "_a");
  4. }
  5.  
  6. arr_a = "[";
  7.        
  8. for (x2 = 0; x2 <= ob_4.length; x2 ++)
  9. {
  10.         if (x2 == ob_4.length)
  11.             arr_a = arr_a + "{num_hab:" + "'" + x2 + "',num_ad:'" + ob_4[x2].value + "'}"
  12.         else
  13.             arr_a = arr_a + "{num_hab:" + "'" + x2 + "',num_ad:'" + ob_4[x2].value + "'},"
  14. }
  15.  
  16. arr_a = arr_a + "]";
  17.  
  18. ajax.open ("GET", "php/query2.php?a_php=" + arr_a, true);

La consola de errores de Firefox me dice que ob_4[x2] es indefinido (cuando es un valor de un desplegable que previamente he tenido que seleccionar) con lo que ob_4[x2].value me dice que es nulo...

¿Hay algo que esté haciendo mal?

Toda ayuda o dato que me sirva para seguir avanzando será agradecido.


Un saludo a todos.

Última edición por Koden; 06/04/2009 a las 03:16 Razón: Había transcripto mal el script
  #7 (permalink)  
Antiguo 06/04/2009, 04:53
Avatar de colote  
Fecha de Ingreso: julio-2008
Ubicación: Rosario - Santa Fe - Argentina
Mensajes: 729
Antigüedad: 15 años, 10 meses
Puntos: 8
Respuesta: Pasar un vector de un archivo JS a uno PHP

Hola Koden !!!

Fijate a ver si te sirve esta ayuda !!!

Esto use para pasar un array de javascript a PHP, pero no estoy usando AJAX, por ahi te sirve la idea !!!

En el archivo funciones.js tengo asi :
Código PHP:
function tu_funcion(e)
{
var 
preciojs1 = new Array();
var 
preciojs2 = new Array();

//rellenas tus arrays

  
var obj={preciopes preciojs1,
preciodol:preciojs2};
  var 
cadena=obj.toJSONString();
  
enviarDatos(cadena);


addEvent(window,'load',inicializarEventos,false);

function 
inicializarEventos()
{
  var 
ref=document.getElementById('boton1');
  
addEvent(ref,'click',tu_funcion,false);
}

//***************************************
//Funciones comunes a todos los problemas
//***************************************
function addEvent(elemento,nomevento,funcion,captura)
{
  if (
elemento.attachEvent)
  {
    
elemento.attachEvent('on'+nomevento,funcion);
    return 
true;
  }
  else  
    if (
elemento.addEventListener)
    {
      
elemento.addEventListener(nomevento,funcion,captura);
      return 
true;
    }
    else
      return 
false;
}


var 
conexion1;
function 
enviarDatos(cadena
{
  
conexion1=crearXMLHttpRequest();
  
conexion1.onreadystatechange procesarEventos;
  
conexion1.open('GET','actualiza.php?cadena='+cadenatrue);
  
conexion1.send(null);
}

function 
procesarEventos()
{
  var 
resultados document.getElementById('resultados');
  if(
conexion1.readyState == 4)  //
  
{
    
resultados.innerHTML conexion1.responseText;
  } 
  else 
  {
    
resultados.innerHTML "<b>Grabando... Aguarde unos instantes</b>";
  }
}

function 
crearXMLHttpRequest() 
{
  var 
xmlHttp=null;
  if (
window.ActiveXObject
    
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  else 
    if (
window.XMLHttpRequest
      
xmlHttp = new XMLHttpRequest();
  return 
xmlHttp;

Y en actualiza.php los tomo asi ... !!!

Código PHP:

?php
require('json.php');
include(
'conexion.php');
$json=new Services_JSON();
$cad=$json->decode(stripslashes($_GET['cadena']));

// al for le puse 10, pero en realidad es el tamaño del array !!!
for($i=0;$i<=10;$i++)
{
    echo 
$precio1=$cad->preciopes[$i]; echo " ";
    echo 
$precio2=$cad->preciodol[$i]; echo "<br>";

Y si te ayuda los arrays los cargo desde una paginita asi :
Código HTML:
<input type="button" value="Enviar" id="boton1">
<a href="inicio.php"><img src="botones/volver.png" alt="volver" border="0"/></a>
<br>
<div id="resultados">Actualizando !!!</div>

<input type="hidden" size="4" name="precioss1[]">
<input type="hidden" size="4" name="precioss2[]"> 
No se si esto te ayude, soy medio novato en este tema !!!!!!
La ayuda la saque tambien de www.ajaxya.com.ar, hay un listado de temas en el cual uno dice
"De JSON a PHP (utilizando la librería JSON.php)".
Suerte !!!
Saludos, Ricardo !!!
__________________
Mail: [email protected]
  #8 (permalink)  
Antiguo 06/04/2009, 05:12
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

Una cosa que estás haciendo mal es: x2 <= ob_4.length. Para recorrer ob_4 te tienes que parar en x2 < ob_4.length

(Si la longitud del array es. p.ej. 7, existen ob_4[0] hasta ob_4[6] pero no existe ob_4[7])
  #9 (permalink)  
Antiguo 07/04/2009, 02:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Muchísimas gracias a todos por vuestras respuestas.

Aún sigo peleándome con el script de marras.

Después de crear y enviar los arrays así:

Este código va en ajax.js
Código javascript:
Ver original
  1. ob_4 = "";
  2. ob_5 = "";
  3.  
  4. for (x = 0; x < ob_3.value; x++)
  5. {
  6.     ob_4[x] = document.getElementById("name_attendee_" + x + "_a");
  7.     ob_5[x] = document.getElementById("name_attendee_" + x + "_b");
  8. }
  9.  
  10. arr_a = "[";
  11.  
  12. for (x2 = 0; x2 < ob_4.length; x2 ++)
  13. {
  14.     if (x2 == ob_4.length)
  15.         arr_a = arr_a + "{num_hab:" + "'" + x2 + "',num_ad:'" + ob_4[x2].value + "'}"
  16.     else
  17.         arr_a = arr_a + "{num_hab:" + "'" + x2 + "',num_ad:'" + ob_4[x2].value + "'},"
  18. }
  19.  
  20. arr_a = arr_a + "]";
  21.  
  22. arr_b = "[";
  23.  
  24. for (x2 = 0; x2 < ob_5.length; x2 ++)
  25. {
  26.     if (x2 == ob_5.length)
  27.         arr_b = arr_b + "{num_hab:" + "'" + x2 + "',num_ad:'" + ob_5[x2].value + "'}"
  28.     else
  29.         arr_b = arr_b + "{num_hab:" + "'" + x2 + "',num_ad:'" + ob_5[x2].value + "'},"
  30. }
  31.  
  32. arr_b = arr_b + "]";
  33.  
  34. ajax = objetoAjax ();
  35. ajax.open ("GET", "php/query2.php?a_php=" + arr_a + "&b_php=" + arr_b, true);

Y de procesarlos con php así

Este código va en query2.php
Código PHP:
Ver original
  1. $valores_1 = stripslashes($_GET['a_php']);
  2. $decoded_1 = json_decode($valores_1, true);
  3. $valores_2 = stripslashes($_GET['b_php']);
  4. $decoded_2 = json_decode($valores_2, true);
  5. echo "Este es el contenido del vector <br />" . var_dump ($decoded_1) . "<br />";
  6. echo "Este es el contenido del vector <br />" . var_dump ($decoded_2) . "<br />";

Obtengo en ambos casos este resultado:

Código:
array(0) { }
Con lo que sospecho, que es en la parte de JavaScript (seguramente, pagando el precio de mi novatez) donde creo que no estoy llenando bien el vector...

¿Quizás estoy haciéndolo mal? (ob_3, ob_4 y ob_5 son selects HTML y no sé a ciencia cierta si estoy tomando bien sus valores) ¿Habría alguna manera de interrumpir el script js para poder ver los valores que están tomando los arrays en cada posición?

Muchas gracias de nuevo a todos por vuestra ayuda.

Un saludo.
  #10 (permalink)  
Antiguo 07/04/2009, 02:32
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

1. Si sospechas que no estás construyendo bien los datos que envías no tienes más que comprobarlo. Antes de la línea del ajax.open(...) mete:

Código javascript:
Ver original
  1. alert("a: " + arr_a + "\nb: " + arr_b);

2. No acabo de entender muy bien por qué tanta insistencia en el lado de PHP de hacer stripslashes. No estoy 100% seguro pero yo diría que en todo caso lo que necesitas más que un stripslashes es hacerle urldecode.
  #11 (permalink)  
Antiguo 07/04/2009, 03:05
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Gracias por tu aporte, venkman.

Efectivamente, y tal y como sospechaba, el vector está vacío desde el mismo javascript, por lo que intentaré cargar sus valores de otra manera.

De todos modos, me apunto tu sugerencia a la hora de tratar los datos una vez me lleguen a PHP.

¡Sigo probando!

¡¡Un saludo!!
  #12 (permalink)  
Antiguo 07/04/2009, 03:31
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

Pista: Si s = document.getElementById("miSelect") es un select, puedes acceder al array de opciones con s.options (s.options[0], s.options[1] ...)
  #13 (permalink)  
Antiguo 07/04/2009, 03:43
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Muchas gracias, aunque lo que peor llevo es intentar concatenar el número para que se genere automáticamente con un for.

Código javascript:
Ver original
  1. //He observado que ob_3.value llega perfecto
  2. for (x = 0; x < ob_3.value; x++)
  3. {
  4.     //Aquí es donde creo que está el problema, al concatenar
  5.     ob_4 = document.getElementById("name_attendee_" + x + "_a");
  6.     ob_5 = document.getElementById("name_attendee_" + x + "_b");
  7. }

Así que voy a intentar tomar el valor del campo por el nombre del mismo, a ver si tengo así más suerte...
  #14 (permalink)  
Antiguo 08/04/2009, 01:54
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Lo conseguí (o eso creo, la verdad es que no tengo demasiado claro el estar pillando correctamente los options seleccionados en el select)

Al final, ha quedado así:

Código javascript:
Ver original
  1. for (x = 0; x < ob_3.value; x++)
  2. {
  3.     ob_4 = document.getElementById("name_attendee_" + x + "_a");
  4.     ob_5 = document.getElementById("name_attendee_" + x + "_b");
  5. }
  6.  
  7. arr_a = "[";
  8.  
  9. for (x2 = 0; x2 < ob_3.value; x2 ++)
  10. {
  11.     if (x2 == ob_3.value)
  12.         arr_a = arr_a + "{num_hab:" + "'" + (x2 + 1) + "',num_ad:'" + ob_4.value + "'}"
  13.     else
  14.         arr_a = arr_a + "{num_hab:" + "'" + (x2 + 1) + "',num_ad:'" + ob_4.value + "'},"
  15. }
  16.  
  17. arr_a = arr_a + "]";
  18.  
  19. arr_b = "[";
  20.  
  21. for (x2 = 0; x2 < ob_3.value; x2 ++)
  22. {
  23.     if (x2 == ob_3.value)
  24.         arr_b = arr_b + "{num_hab:" + "'" + (x2 + 1) + "',num_ni:'" + ob_5.value + "'}"
  25.     else
  26.         arr_b = arr_b + "{num_hab:" + "'" + (x2 + 1) + "',num_ni:'" + ob_5.value + "'},"
  27. }
  28.  
  29. arr_b = arr_b + "]";

Ahora sólo queda recibirlo bien en PHP.

Muchísimas gracias por la ayuda.

Última edición por Koden; 08/04/2009 a las 02:00
  #15 (permalink)  
Antiguo 08/04/2009, 03:05
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

El primer bucle for no tiene mucho sentido como bucle, Koden. En cada pasada del bucle reasignas ob_4 = ... con lo que el único valor que quedará será el de la última pasada. Es decir, que podrías reducir ese bucle a:

Código javascript:
Ver original
  1. ob_4 = document.getElementById("name_attendee_" + (ob_3.value-1) + "_a");
  2. ob_5 = document.getElementById("name_attendee_" + (ob_3.value-1) + "_b");

¿Es eso lo que intentas hacer o es otra cosa? Porque así tengo la sensación de que vas a meter el mismo valor todo el rato en los arrays.
  #16 (permalink)  
Antiguo 08/04/2009, 03:46
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Bueno, a falta de pillar bien los índices ya he dado como pasar el vector a PHP. (Cambiando eso sí, un par de cosillas al formar los array)

Código javascript:
Ver original
  1. arr_a = "[";
  2.  
  3. for (x2 = 0; x2 < ob_3.value; x2 ++)
  4. {
  5.     if (x2 == (ob_3.value - 1))
  6.         arr_a = arr_a + "{\"num_hab\":" + (x2 + 1) + ",\"num_ad\":" + ob_4.value + "}"
  7.     else
  8.         arr_a = arr_a + "{\"num_hab\":" + (x2 + 1) + ",\"num_ad\":" + ob_4.value + "},"
  9. }
  10.  
  11. arr_a = arr_a + "]";
  12.  
  13. arr_b = "[";
  14.  
  15. for (x2 = 0; x2 < ob_3.value; x2 ++)
  16. {
  17.     if (x2 == (ob_3.value - 1))
  18.         arr_b = arr_b + "{\"num_hab\":" + (x2 + 1) + ",\"num_ni\":" + ob_5.value + "}"
  19.     else
  20.         arr_b = arr_b + "{\"num_hab\":" + (x2 + 1) + ",\"num_ni\":" + ob_5.value + "},"
  21. }
  22.  
  23. arr_b = arr_b + "]";

Para pasar los valores del array js a un array php sólo se necesitan estas líneas (al menos para como yo estoy montando el array):

Código PHP:
Ver original
  1. $a_php = json_decode (stripslashes (urldecode ($_GET['a_php'])), true);
  2. $b_php = json_decode (stripslashes (urldecode ($_GET['b_php'])), true);

Y te explico lo que quiero hacer (quizás no me haya expresado con la suficiente claridad, te pido disculpas )

Verás, tengo un select donde escojo un número de habitaciones que quiero reservar, hasta un máximo de cinco.

Código HTML:
<div id="hab">
        <label for="num_attendees">
       	    	N&uacute;mero de habitaciones<br />
		<select id="num_attendees" tabindex="3">
			<option value="0">Seleccione</option>
			<option value="1">1</option>
			<option value="2">2</option>
			<option value="3">3</option>
			<option value="4">4</option>
			<option value="5">5</option>
		</select>
	</label>
</div> 
De ahí, hago aparecer a dos selects por cada habitación seleccionada (name_attendee_1_a, name_attendee_1_b, ... name_attendee_n_a, name_attendee_n_b) que básicamente asignarían el número de adultos asignados a la habitación n y el número de niños asignados a la habitación n...

Con lo que veo que tienes razón... Debería llenar ob_4 y ob_5 de la que estoy recorriendo ob_3... ¿Me equivoco?

Es decir, debería hacer esto (más o menos)

Código javascript:
Ver original
  1. for (x = 0; x < ob_3.value; x++)
  2. {
  3.     ob_4 = document.getElementById("name_attendee_" + x + "_a");
  4.     ob_5 = document.getElementById("name_attendee_" + x + "_b");
  5.  
  6.     //Llenar arr_a y llenar arr_b
  7. }

Muchas gracias por tu ayuda, venkman. ¡Gracias a tí estoy aprendiendo Javascript a marchas forzadas!
  #17 (permalink)  
Antiguo 08/04/2009, 05:27
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

Sí, esa es una buena idea, la de meter el llenado de arr_a y arr_b ahí. Seguramente simplificarías bastante el código
  #18 (permalink)  
Antiguo 08/04/2009, 06:03
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Uf... La verdad es que es complicado conseguir por el id en mitad del bucle el valor seleccionado del índice del select...

Tengo el código así ahora mismo:

Código javascript:
Ver original
  1. for (x = 0; x < ob_3.value; x++)
  2. {
  3.     var ob_4 = document.getElementById("name_attendee_" + x + "_a").options[document.getElementById("name_attendee_" + x + "_a").selectedIndex].value;
  4.     var ob_5 = document.getElementById("name_attendee_" + x + "_b").options[document.getElementById("name_attendee_" + x + "_b").selectedIndex].value;
  5.  
  6.     arr_a = "[";
  7.  
  8.     if (x == (ob_3.value - 1))
  9.         arr_a = arr_a + "{\"num_hab\":" + (x2 + 1) + ",\"num_ad\":" + ob_4 + "}"
  10.     else
  11.         arr_a = arr_a + "{\"num_hab\":" + (x2 + 1) + ",\"num_ad\":" + ob_4 + "},"
  12.  
  13.     arr_a = arr_a + "]";
  14.  
  15.     arr_b = "[";
  16.  
  17.     if (x == (ob_3.value - 1))
  18.         arr_b = arr_b + "{\"num_hab\":" + (x2 + 1) + ",\"num_ni\":" + ob_5 + "}"
  19.     else
  20.         arr_b = arr_b + "{\"num_hab\":" + (x2 + 1) + ",\"num_ni\":" + ob_5 + "},"
  21.  
  22.     arr_b = arr_b + "]";
  23. }

Pero sigue dándome un error (me dice que es nulo)

¿Alguien sabría decirme si estoy haciendo algo mal?



Muchas gracias a todos y un saludo.
  #19 (permalink)  
Antiguo 08/04/2009, 06:59
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

En el código que has puesto tienes aún x2 del código anterior en algunos sitios. Debería ser x, ¿no?
  #20 (permalink)  
Antiguo 08/04/2009, 08:42
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Uhmm... Sí, tienes razón, pero me refería a que me dice que document.getElementById("name_attendee_" + x + "_a") es nulo, lo otro pese a que es un error, entiendo que lo que haría sería llenar mal el vector...

De todos modos he probado a cambiarlo y me sigue fallando...

Seguiré probando a ver...
  #21 (permalink)  
Antiguo 08/04/2009, 09:29
 
Fecha de Ingreso: marzo-2005
Mensajes: 197
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Pasar un vector de un archivo JS a uno PHP

Uffff!!!!

¡¡Conseguí dar con ello!!

Código javascript:
Ver original
  1. arr_a = "[";
  2. arr_b = "[";
  3.  
  4. for (x = 0; x < ob_3.value; x++)
  5. {
  6.     var ob_4 = document.getElementById("name_attendee_" + (x + 1) + "_a");
  7.     var ob_5 = document.getElementById("name_attendee_" + (x + 1) + "_b");
  8.  
  9.     var in_4 = ob_4.selectedIndex;
  10.     var in_5 = ob_5.selectedIndex;
  11.  
  12.     var va_4 = ob_4.options[in_4].value;
  13.     var va_5 = ob_5.options[in_5].value;
  14.  
  15.     if (x == (ob_3.value - 1))
  16.         arr_a = arr_a + "{\"num_hab\":" + (x + 1) + ",\"num_ad\":" + va_4 + "}"
  17.     else
  18.         arr_a = arr_a + "{\"num_hab\":" + (x + 1) + ",\"num_ad\":" + va_4 + "},"
  19.  
  20.     if (x == (ob_3.value - 1))
  21.         arr_b = arr_b + "{\"num_hab\":" + (x + 1) + ",\"num_ni\":" + va_5 + "}"
  22.     else
  23.         arr_b = arr_b + "{\"num_hab\":" + (x + 1) + ",\"num_ni\":" + va_5 + "},"
  24. }
  25.  
  26. arr_a = arr_a + "]";
  27. arr_b = arr_b + "]";

¡Muchísimas gracias por tu ayuda, venkman!
  #22 (permalink)  
Antiguo 08/04/2009, 10:07
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pasar un vector de un archivo JS a uno PHP

De nada. La mayor parte del trabajo la has hecho tú mismo. Me alegro :)
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 10:12.