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

Pasar array de javascript a php por ajax sin q se pierdan datos

Estas en el tema de Pasar array de javascript a php por ajax sin q se pierdan datos en el foro de Frameworks JS en Foros del Web. Buenas, estoy intentando pasar un array de javascript a php por ajax al parecer si los pasa pero al mostrarlo se pierden los datos,, Nota: ...
  #1 (permalink)  
Antiguo 19/02/2010, 13:54
 
Fecha de Ingreso: noviembre-2009
Mensajes: 112
Antigüedad: 15 años
Puntos: 0
Sonrisa Pasar array de javascript a php por ajax sin q se pierdan datos

Buenas, estoy intentando pasar un array de javascript a php por ajax al parecer si los pasa pero al mostrarlo se pierden los datos,,

Nota: ajax.js es el codigo que siempre he utilizado para mandar datos y siempre me ha servido por eso no lo muestro, el script es:

document.write("<script type='text/javascript' src='ajax.js'></script>");

function validarIngresos()
{

var arrayNPE = new Array(1, 2);

ajax = objetoAjax();
ajax.open("POST", "graficarNotas.php", true);

ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{


document.getElementById("divReg").innerHTML = ajax.responseText;
document.form1.submit();
}
}


var arrayNotasPracsEspecificas = arrayNPE.toString();
var arrayNotasPracsGenericas = arrayNPG.toString();

alert("arrayNotasPracsEspecificas="+arrayNotasPrac sEspecificas);
alert("arrayNPE="+arrayNPE);

ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

ajax.send("arrayNotasPracsEspecificas="+arrayNotas PracsEspecificas);
}


Aqui está el código de graficarNotas.php

<?php


session_start();

$arrayNotasPracsEspecificas = $_POST["arrayNotasPracsEspecificas"];

$arrayNPE = explode(',',$arrayNotasPracsEspecificas);

echo "arrayNPE: <pre>";
print_r($arrayNPE);
echo "</pre>";


echo "arrayNotasPracsEspecificas: <pre>";
print_r($arrayNotasPracsEspecificas);
echo "</pre>";

?>

Y el resultado que obtengo es que, sí me muestra el valor de arrayNPE(1, 2) pero muy rapidamente (dura mas o menos 1 segundo mostrandolo) y después muestra el nombre del vector pero sin valores(arrayNPE => 0). Entonces por eso digo que se están perdiendo los valores,,,

Muchas gracias por las prontas respuestas
  #2 (permalink)  
Antiguo 19/02/2010, 14:30
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

debes de convertirlo obligatoriamente en una cadena como mínimo, la sintaxis de JSON es recomendable ya que php dispone de funciones para procesarlas: http://php.net/manual/en/book.json.php
  #3 (permalink)  
Antiguo 19/02/2010, 14:34
 
Fecha de Ingreso: noviembre-2009
Mensajes: 112
Antigüedad: 15 años
Puntos: 0
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

gracias por responder, ps estoy convirtiendolo a cadena con la siguiente línea:

var arrayNotasPracsEspecificas = arrayNPE.toString();

Igual voy a mirar su enlace, si alguien tiene más ideas gracias
  #4 (permalink)  
Antiguo 19/02/2010, 14:38
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

eso no lo convierte en cadena, simplemente invoca al método toString() de la clase que te devolverá la descripción de la misma.

tienes que recorrer el array y concatenarlo en otra variable string

Código Javascript:
Ver original
  1. function convertJSON(miarray){
  2.     var mijson='';
  3.     for(var i in miarray){
  4.         mijson=mijson+","+i+":'"+(miarray[i])+"'";
  5.     }
  6.     return "{"+mijson.substring(1)+"}";
  7.    
  8. }

Última edición por maycolalvarez; 19/02/2010 a las 14:45
  #5 (permalink)  
Antiguo 19/02/2010, 15:11
 
Fecha de Ingreso: noviembre-2009
Mensajes: 112
Antigüedad: 15 años
Puntos: 0
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

no me funcionó dejo el código para ver en que fallé:

var arrayNPE = new Array(1, 2);

var mijson='';
for(var i in arrayNPE)
{
mijson=mijson+","+(arrayNPE[i]);
}
ajax = objetoAjax();
ajax.open("POST", "graficarNotas.php", true);

ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{

document.getElementById("divReg").innerHTML = ajax.responseText;
document.form1.submit();
}
}

var arrayNotasPracsEspecificas = mijson;

alert("arrayNotasPracsEspecificas="+arrayNotasPrac sEspecificas);

ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("arrayNotasPracsEspecificas="+arrayNotas PracsEspecificas);
}

y el la pag php la dejé como estaba,,

cual es el error?
  #6 (permalink)  
Antiguo 19/02/2010, 15:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

debes además escapar el json: http://www.w3schools.com/jsref/jsref_escape.asp

y puedes llamar a la función que te pase, no solo incrustarla en el código
  #7 (permalink)  
Antiguo 19/02/2010, 15:36
 
Fecha de Ingreso: noviembre-2009
Mensajes: 112
Antigüedad: 15 años
Puntos: 0
Sonrisa Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

lo q hice fue esto:

function convertJSON(miarray){
var mijson='';
for(var i in miarray){
mijson=mijson+","+i+":'"+(miarray[i])+"'";
}
return "{"+mijson.substring(1)+"}";

}

function validarIngresos()
{

var arrayNPE = new Array(1, 2);

ajax = objetoAjax();
ajax.open("POST", "graficarNotas.php", true);

ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{

document.getElementById("divReg").innerHTML = ajax.responseText;
document.form1.submit();
}
}

var arrayNotasPracsEspecificas = convertJSON(arrayNPE);
var a = scape(arrayNotasEspecificas);

alert(arrayNotasPracsEspecificas);


ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.send("arrayNotasPracsEspecificas="+arrayNotas PracsEspecificas);
}

En el alert me muestra {0:'1',1:'2'}

Y me sale un error que escape no está definido

y otra pregunta : Como sería el explode en el archivo php?

Gracias por las respuestas
  #8 (permalink)  
Antiguo 19/02/2010, 15:39
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

Y si le pasas el JSON asi a lo bestia al php y cuando lo recibes haces
Código PHP:
$json json_decode($_GET['array']);
foreach(
$json as $js){

echo 
$js.'<br />';


__________________
HV Studio
Diseño y desarrollo web
  #9 (permalink)  
Antiguo 19/02/2010, 15:53
 
Fecha de Ingreso: noviembre-2009
Mensajes: 112
Antigüedad: 15 años
Puntos: 0
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

gracias por la respuesta pero no funcionaa al mostrarlo me sale en blanco :(,
Que problema con los navegadores, ése código me funcionaba muy bien sólo en IE6, pero necesito que funcione en mozilla,,

Alguien tiene otra idea??????

Y lo del scape es muy raro por q según la página el scape es compatible con mozilla,,,
  #10 (permalink)  
Antiguo 20/02/2010, 07:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

escape no scape
  #11 (permalink)  
Antiguo 22/02/2010, 08:50
 
Fecha de Ingreso: noviembre-2009
Mensajes: 112
Antigüedad: 15 años
Puntos: 0
Respuesta: Pasar array de javascript a php por ajax sin q se pierdan datos

Buenas,, como lo tenía desde el principio estaba bien sólo le quité la línea:

document.form1.submit();

Es decir que estaba mandando dos veces los datos?

con document.form1.submit(); y ajax.send?

ps lo importante es que funcionó pero ps sería bno el saber el porq no se puede hacer el submit

Igual gracias por la intención de ayudar

:D
  #12 (permalink)  
Antiguo 22/02/2010, 09:42
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Tema movido desde PHP a AJAX

Etiquetas: ajax, javascript, pasar, php
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 23:03.