Pasar Array desde Php a Java Script - Evento onClick

3,911 views
Skip to first unread message

Gercho

unread,
Jul 16, 2012, 4:34:33 PM7/16/12
to php...@googlegroups.com
Buenas,

Tengo el siguiente Código:

PHP:
  <onClick="javascript:xxxxx(<? echo  $v_categoria; ?>)">


  $v_categoria es un Array el cual contiene: 

array(4) {
  [1]=>
  string(20) "{"ID":"SD","CHK":""}"
  [2]=>
  string(20) "{"ID":"FI","CHK":""}"


Java Script:

function xxxxx( v_categoria){

    for (i=1; v_categoria[i][ID]==='SD' ;i++){
          v_categoria[i][CHK] = 'X';
    }

}

Como puedo hacer para pasar el array desde el evento, ya que de esta forma que lo hice me da el siguiente error:

     function Array() { [native code] }

Gracias por las respuestas!!

Bruno Tenaglia

unread,
Jul 16, 2012, 5:55:41 PM7/16/12
to php...@googlegroups.com

Hola,
Pensaste en usar jason:

http://php.net/manual/es/function.json-encode.php

-------------------------------------------
Bruno M. Tenaglia -
Analista de Sistemas / Analista Programador
Twitter: @bruno_tenaglia
Celular: 3416007222
------------------------------------------   Enviado desde un Motorola Milestone

-------------------------------------------

--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/php-arg/-/AF4uEbe1M40J.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.

Bruno Tenaglia

unread,
Jul 16, 2012, 5:56:38 PM7/16/12
to php...@googlegroups.com

Json, se me fue la 'a' demás

-------------------------------------------
Bruno M. Tenaglia -
Analista de Sistemas / Analista Programador
Twitter: @bruno_tenaglia
Celular: 3416007222
------------------------------------------   Enviado desde un Motorola Milestone

-------------------------------------------

El jul 16, 2012 6:55 p.m., "Bruno Tenaglia" <brunomart...@gmail.com> escribió:

Hola,
Pensaste en usar jason:

http://php.net/manual/es/function.json-encode.php

-------------------------------------------
Bruno M. Tenaglia -
Analista de Sistemas / Analista Programador
Twitter: @bruno_tenaglia
Celular: 3416007222
------------------------------------------   Enviado desde un Motorola Milestone

-------------------------------------------

El jul 16, 2012 5:34 p.m., "Gercho" <german...@gmail.com> escribió:


>
> Buenas,
>
> Tengo el siguiente Código:
>
> PHP:

>   <onClick="javascript:xxxxx(<? echo  $v_cate...

Gercho

unread,
Jul 17, 2012, 2:30:18 PM7/17/12
to php...@googlegroups.com
Hola bruno,

Probe con json_encode, pero nada. Cuando veo como arma el html, se ve que levanta todo el array pero la funcion del js no lo interpreta.


El lunes, 16 de julio de 2012 18:56:38 UTC-3, Bruno M. Tenaglia escribió:

Json, se me fue la 'a' demás

-------------------------------------------
Bruno M. Tenaglia -
Analista de Sistemas / Analista Programador
Twitter: @bruno_tenaglia
Celular: 3416007222
------------------------------------------   Enviado desde un Motorola Milestone

-------------------------------------------


Hola,
Pensaste en usar jason:

http://php.net/manual/es/function.json-encode.php

-------------------------------------------
Bruno M. Tenaglia -
Analista de Sistemas / Analista Programador
Twitter: @bruno_tenaglia
Celular: 3416007222
------------------------------------------   Enviado desde un Motorola Milestone

-------------------------------------------



>

Juan Pablo Mónaco

unread,
Jul 17, 2012, 2:56:10 PM7/17/12
to php...@googlegroups.com
El javascript no te va a interpretar el array de PHP como un array de javascript, o creas el array de javascript con algo como:

<?php
//...
       $array_php = array(5=>23, 24, 13=>33, 74=>55, 77);
//...
?>

<script type="text/javascript">
       var array_js = new Array();
       <?php
              foreach($array_php as $indice=>$valor){
                     echo "array_js[$indice] = $valor;\n";
              }
       ?>
</script>

y se lo pasas, o le pasas un json y usas alguna funcion de javascript para convertir el string a json o something like that, espero haber sido de ayuda, saludos.-

--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para ver este debate en la Web, visita https://groups.google.com/d/msg/php-arg/-/rWbONhXF9foJ.

Bruno Tenaglia

unread,
Jul 17, 2012, 3:05:47 PM7/17/12
to php...@googlegroups.com

Claro obio que no lo interpreta, tenes que parsearlo con el js, ahora no tengo a mano alguna function js para descomprimir el json, pero si buscas encontras varias.

Saludos.

-------------------------------------------
Bruno M. Tenaglia -
Analista de Sistemas / Analista Programador
Twitter: @bruno_tenaglia
Celular: 3416007222
------------------------------------------   Enviado desde un Motorola Milestone

-------------------------------------------

El jul 17, 2012 3:56 p.m., "Juan Pablo Mónaco" <joh...@gmail.com> escribió:

El javascript no te va a interpretar el array de PHP como un array de javascript, o creas el array de javascript con algo como:

<?php
//...
       $array_php = array(5=>23, 24, 13=>33, 74=>55, 77);
//...
?>

<script type="text/javascript">
       var array_js = new Array();
       <?php
              foreach($array_php as $indice=>$valor){
                     echo "array_js[$indice] = $valor;\n";
              }
       ?>
</script>

y se lo pasas, o le pasas un json y usas alguna funcion de javascript para convertir el string a json o something like that, espero haber sido de ayuda, saludos.-

El 17 de julio de 2012 15:30, Gercho <german...@gmail.com> escribió:


>
> Hola bruno,
>
> Probe con json_encode, pero nada. Cuando veo como arma el html, se ve que levan...


--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Goog...

Federico

unread,
Jul 17, 2012, 3:08:10 PM7/17/12
to php...@googlegroups.com
Y si en lugar de usar un array de js usas el json directo?

2012/7/17 Bruno Tenaglia <brunomart...@gmail.com>:
> Argentina" de Grupos de Google.

Maximiliano Churichi

unread,
Jul 17, 2012, 3:10:36 PM7/17/12
to php...@googlegroups.com
Porque no usas json directo como dicen?? no te parece mas simple y correcto??

<?php
$data = array(
array(
'ID' => 'SD',
'CHK'=> ''
),
array(
'ID' => 'FI',
'CHK' => ''
)
);
?>
var data = eval(<?php json_encode($data) ?>);
console.log(data[0].ID); // SD
console.log(data[1].ID); // FI

Maximiliano Churichi
<mchu...@gmail.com>


El día 17 de julio de 2012 16:05, Bruno Tenaglia
<brunomart...@gmail.com> escribió:
> Argentina" de Grupos de Google.

Mariano Garcia Berrotarán

unread,
Jul 17, 2012, 4:03:13 PM7/17/12
to php...@googlegroups.com
2012/7/17 Maximiliano Churichi <mchu...@gmail.com>:
> Porque no usas json directo como dicen?? no te parece mas simple y correcto??

porque nunca es buena idea hacerle eval a un JSON:

"The eval function is very fast. However, it can compile and execute
any JavaScript program, so there can be security issues. The use of
eval is indicated when the source is trusted and competent. It is much
safer to use a JSON parser. In web applications over XMLHttpRequest,
communication is permitted only to the same origin that provide that
page, so it is trusted. But it might not be competent. If the server
is not rigorous in its JSON encoding, or if it does not scrupulously
validate all of its inputs, then it could deliver invalid JSON text
that could be carrying dangerous script. The eval function would
execute the script, unleashing its malice."

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

Se recomienda usar JSON.parse. Los browsers modernos lo soportan
nativamente, pero aca esta como forma de lib para los que no lo
implementan:
https://github.com/douglascrockford/JSON-js/blob/master/json2.js


--
Mariano García Berrotarán

Gercho

unread,
Jul 17, 2012, 4:17:38 PM7/17/12
to php...@googlegroups.com, garcia.b...@gmail.com
Hice lo siguiente:


PHP:
Arma el Array:

$v_categoria[$i] =  array( 'ID' => $cat, 'CHK' => '');

Evento Java Script:
    onClick="javascript:check_box(<? echo $categoria; ?>,<?  echo json_encode($v_categoria); ?>)"

SCRIPT:

<script>
function check_box(id, v_categoria){

    for (i=1; v_categoria[i][ID]===id ;i++){
          v_categoria[i][CHK] = 'X';
    }

}
</script>

esta bien asi?

El martes, 17 de julio de 2012 17:03:13 UTC-3, Mariano Garcia Berrotarán escribió:
2012/7/17 Maximiliano Churichi 

Omar Tomailla

unread,
Jul 17, 2012, 4:22:56 PM7/17/12
to php...@googlegroups.com
Hola a todos, también tuve un problema parecido pasar un array de php a javascript. Lo que hice fue lo siguiente:

[1] El array de php lo converti en json y lo guarde un una caja de texto oculta

<input type='hidden' name='arrayXls' class='arrayXls' value='<?php echo json_encode($datas[1]); ?>' />

[2] Luego lo mande Ajax 

$.ajax({
url: "../index/controla/diaGrillaJson/",
type: "POST",
dataType: 'json',
data: { campania: $('.campania').val() },
success: function(result){
$('.gridDia').html(result.html);
$('.arrayXls').val(result.arreglo);
}
});

[3] En el php lo trabaje y lo retorne con json

$data['html']=$retorno[0];
$data['arreglo']=json_encode($retorno[1]);

header('Content-type: application/json');
echo json_encode($data);

Espero haberte ayudado un poco

Atte V_Omar

2012/7/17 Mariano Garcia Berrotarán <garcia.b...@gmail.com>
--
Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP Argentina" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.




--
La perseverancia es la virtud por la cual todas las otros virtudes dan su fruto. (Arturo Graf)

Maximiliano Churichi

unread,
Jul 17, 2012, 4:24:28 PM7/17/12
to php...@googlegroups.com
Totalmente de acuerdo, pero este no es el caso de problemas de
seguridad ya que no dependes de ninguna fuente externa, por lo que
eval o JSON.parse son aceptables, salvo que quieras mantener
compatibilidad con browsers prehistoricos como IE7.

Maximiliano Churichi
<mchu...@gmail.com>

2012/7/17 Gercho <german...@gmail.com>:
> --
> Has recibido este mensaje porque estás suscrito al grupo "Grupo PHP
> Argentina" de Grupos de Google.
> Para ver este debate en la Web, visita
> https://groups.google.com/d/msg/php-arg/-/g-871dkGlnAJ.

Mariano Garcia Berrotarán

unread,
Jul 17, 2012, 4:32:54 PM7/17/12
to php...@googlegroups.com
On Tue, Jul 17, 2012 at 4:24 PM, Maximiliano Churichi
<mchu...@gmail.com> wrote:
> Totalmente de acuerdo, pero este no es el caso de problemas de
> seguridad ya que no dependes de ninguna fuente externa, por lo que
> eval o JSON.parse son aceptables, salvo que quieras mantener
> compatibilidad con browsers prehistoricos como IE7.

Fijate lo que puse quoteado sobre ser confiable y competente.

Saludos

--
Mariano García Berrotarán

Gercho

unread,
Jul 17, 2012, 4:35:47 PM7/17/12
to php...@googlegroups.com
Hice lo siguiente:


PHP:
Arma el Array:

$v_categoria[$i] =  array( 'ID' => $cat, 'CHK' => '');

Evento Java Script:
    onClick="javascript:check_box(<? echo $categoria; ?>,<?  echo json_encode($v_categoria); ?>)"

SCRIPT:

<script>
function check_box(id, v_categoria){

    for (i=1; v_categoria[i][ID]===id ;i++){
          v_categoria[i][CHK] = 'X';
    }

}
</script>

esta bien asi?
Reply all
Reply to author
Forward
0 new messages