Foros del Web » Programando para Internet » PHP »

array tipo json a una funcion de javascript

Estas en el tema de array tipo json a una funcion de javascript en el foro de PHP en Foros del Web. hola amigos estoy tratando enviar datos de php a otra pagina este es mi php @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original $listnew [ 'idnota' ...
  #1 (permalink)  
Antiguo 12/09/2010, 01:56
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Pregunta array tipo json a una funcion de javascript

hola amigos estoy tratando enviar datos de php a otra pagina

este es mi php
Código Javascript:
Ver original
  1. $listnew['idnota'] = base64_encode($id_asignado);
  2. $listnew['autor'] = $save_autor_seg;
  3. $listnew['titulo'] = $save_titulo_seg;                     
  4. $nwpost = json_encode($listnew);
  5.  
  6. //aqui trato de enviarle al javascript el array
  7. echo '<script language="Javascript">';                                                                                  echo "self.parent.remotopost('".$nwpost."');";                                                                                                                                                                  echo 'window.location = "articulo_post_resp.php";';
  8.                                                                                             echo '</script>';


este es mi pagina2.php donde la funcion recibira los datos
Código Javascript:
Ver original
  1. function remotopost(json)
  2. {
  3.  
  4. var jsonDatos = $.parseJSON(json);
  5.             alert("usando parseJSON :"+jsonDatos.titulo);  
  6.             alert("usando parseJSON :"+jsonDatos.idnota);  
  7.  
  8. }


todo va bien del problema es cuando se escriben cosas con "" o con '(como sencilla)

sale este error

Error: missing ) after argument list
Línea: 1, columna: 85
Código fuente:
self.parent.remotopost('{"idnota":"Mjcy","autor":" director","titulo":"The Industry\\'s Leading AJAX Components"}');
window.location = "articulo_post_resp.php";

la comilla sencilla evita que se cree la cadena y eso tambien me pasa si escribeb el titulo con
algunas comillas

que puedo hacer hay manera se escapar de los caracteres raros para pasaros por la funcion en forma de cadena al javascript


saludos
esperos sus comentarios

gracias
__________________
gerardo
  #2 (permalink)  
Antiguo 12/09/2010, 02:32
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: array tipo json a una funcion de javascript

Hola
ya revisaste las funciones de cadena y manejo de caracteres especiales de php?
si la respuesta es false, es buen momento para que lo hagas con calma
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 12/09/2010, 13:48
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: array tipo json a una funcion de javascript

Cita:
Iniciado por mortiprogramador Ver Mensaje
Hola
ya revisaste las funciones de cadena y manejo de caracteres especiales de php?
si la respuesta es false, es buen momento para que lo hagas con calma
saludos
bueno previamente limpie la cadena en l variables titulo

Código:
$save_titulo_seg = strip_tags(mysql_real_escape_string(trim($_POST['tx_titulo']), $conect_conexion));//valor del título de la nota
__________________
gerardo
  #4 (permalink)  
Antiguo 12/09/2010, 19:32
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: array tipo json a una funcion de javascript

bueno al parecer no puede enviar el array en formato json de php a una funcion para despues
hacer parseJSON

lo que hice fue en lugar de enviar un array

Código:
<?php
   
      $listnew['idnota'] = base64_encode($id_asignado);
   
      $listnew['autor'] = $save_autor_seg;
   
      $listnew['titulo'] = $save_titulo_seg;                     
   
      $nwpost = json_encode($listnew);
   
       
   
      //aqui trato de enviarle al javascript el array
   
      echo '<script language="Javascript">';                                                                                 
 echo "self.parent.remotopost('".$nwpost."');";                                                                                              
 echo 'window.location = "articulo_post_resp.php";';
   
   echo '</script>';
?>
envio mejor los datos como parametros separados

Código:
<?php

$Json_Id = base64_encode($id_asignado);
									  														
$Json_autor = $save_autor_seg;
									  														
$Json_titulo = addslashes($save_titulo_seg);
									  																							  														
									  														
echo '<script language="Javascript">';									  														
									  														
echo "self.parent.remotopost('".$Json_Id."','".$Json_autor."','".$Json_titulo."');";									  														
									  														
echo 'window.location = "articulo_post_resp.php";';
									  														
echo '</script>';
?>
ahora en la pagina donde esta la funcion remotopost
ahi armo el array en formato JSON

pagina2.html
Código:
function remotopost(uno, dos ,tres)
{

var Datos = ('{"idnota": "'+uno+'","autor":"'+dos+'","titulo":"'+tres+'"}'); 
			var jsonDatos = $.parseJSON(Datos); 
			alert("usando parseJSON :"+jsonDatos.titulo);	
			alert("usando parseJSON :"+jsonDatos.idnota);	

}
listo ya no tuve problemas con comitas sencillas ni con comillas
ya pude pasar ua cadena como por ejmplo

"The Industry's Leading AJAX Components"

lo unicono malo de todo esto que que si deseo pasar mas paremetro probablemente aumentare los parametros de la funcion

saludos
__________________
gerardo
  #5 (permalink)  
Antiguo 12/09/2010, 19:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: array tipo json a una funcion de javascript

Lo que vi en el código anteriormente es que estabas escapando el caracter \ y eso provocaba que no se escapara el caracter '.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #6 (permalink)  
Antiguo 12/09/2010, 19:57
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: array tipo json a una funcion de javascript

bueno observer al imprimir

$nwpost = json_encode($listnew);

echo $nwpos

y me los convertia asi

{"idnota":"Mjkz","autor":"director","titulo":"T he Industry\\'s Leading AJAX Components"}
__________________
gerardo
  #7 (permalink)  
Antiguo 12/09/2010, 20:19
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: array tipo json a una funcion de javascript

rayos creo que aun no funciona me sigue dando problemas
las comillas sencillas



Cita:
Iniciado por chalchis Ver Mensaje
bueno al parecer no puede enviar el array en formato json de php a una funcion para despues
hacer parseJSON

lo que hice fue en lugar de enviar un array

Código:
<?php
   
      $listnew['idnota'] = base64_encode($id_asignado);
   
      $listnew['autor'] = $save_autor_seg;
   
      $listnew['titulo'] = $save_titulo_seg;                     
   
      $nwpost = json_encode($listnew);
   
       
   
      //aqui trato de enviarle al javascript el array
   
      echo '<script language="Javascript">';                                                                                 
 echo "self.parent.remotopost('".$nwpost."');";                                                                                              
 echo 'window.location = "articulo_post_resp.php";';
   
   echo '</script>';
?>
envio mejor los datos como parametros separados

Código:
<?php

$Json_Id = base64_encode($id_asignado);
									  														
$Json_autor = $save_autor_seg;
									  														
$Json_titulo = addslashes($save_titulo_seg);
									  																							  														
									  														
echo '<script language="Javascript">';									  														
									  														
echo "self.parent.remotopost('".$Json_Id."','".$Json_autor."','".$Json_titulo."');";									  														
									  														
echo 'window.location = "articulo_post_resp.php";';
									  														
echo '</script>';
?>
ahora en la pagina donde esta la funcion remotopost
ahi armo el array en formato JSON

pagina2.html
Código:
function remotopost(uno, dos ,tres)
{

var Datos = ('{"idnota": "'+uno+'","autor":"'+dos+'","titulo":"'+tres+'"}'); 
			var jsonDatos = $.parseJSON(Datos); 
			alert("usando parseJSON :"+jsonDatos.titulo);	
			alert("usando parseJSON :"+jsonDatos.idnota);	

}
listo ya no tuve problemas con comitas sencillas ni con comillas
ya pude pasar ua cadena como por ejmplo

"The Industry's Leading AJAX Components"

lo unicono malo de todo esto que que si deseo pasar mas paremetro probablemente aumentare los parametros de la funcion

saludos
__________________
gerardo
  #8 (permalink)  
Antiguo 12/09/2010, 20:28
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Respuesta: array tipo json a una funcion de javascript

mm note que mi problema depende de dos factores

si le pongo
$Json_titulo = addslashes($save_titulo_seg);
tengo problemas con las comillas sencillas

pero no lo pongo funcionan, pero surge otro problema con las comas dobles

__________________
gerardo
  #9 (permalink)  
Antiguo 12/09/2010, 21:39
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Sonrisa Respuesta: array tipo json a una funcion de javascript

bueno para ser que todo el problema viene de aqui
Código:
$save_titulo_seg = strip_tags(mysql_real_escape_string(trim($_POST['tx_titulo']), $conect_conexion));//valor del título de la nota
ya m estaba haciendo el escape

asi: The Industry\\'s Leading AJAX Components

asi que mejor utilizo otra variable
Código:
$art_titulo = filter_input(INPUT_POST, 'tx_titulo', FILTER_SANITIZE_STRING);
$listnew['titulo'] = filter_var($art_titulo, FILTER_SANITIZE_MAGIC_QUOTES);
entonces quedando nuevamente enviando un array tipo JSON

Código:
<?
$listnew['idnota'] = base64_encode($id_asignado);
$listnew['autor'] = $save_autor_seg;
$listnew['titulo'] = filter_var($art_titulo, FILTER_SANITIZE_MAGIC_QUOTES);
$nwpost = json_encode($listnew);

echo '<script language="Javascript">';			
echo "self.parent.remotopost('".$nwpost."');";
echo 'window.location = "articulo_post_resp.php";';
echo '</script>';

?>
hasta ahora no he tenido ningun problema seguire haciendo pruebas
saludos
__________________
gerardo

Etiquetas: funcion, javascript, json, tipo
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 12:16.