Foros del Web » Programando para Internet » Javascript »

invalid label en objeto json

Estas en el tema de invalid label en objeto json en el foro de Javascript en Foros del Web. salu2 señores... tengo un problema con el dato de respuesta, lo que el servidor me retorna es un array codificado en json, pero resulta que ...
  #1 (permalink)  
Antiguo 21/04/2009, 10:04
 
Fecha de Ingreso: junio-2007
Mensajes: 75
Antigüedad: 16 años, 10 meses
Puntos: 1
invalid label en objeto json

salu2 señores... tengo un problema con el dato de respuesta, lo que el servidor me retorna es un array codificado en json, pero resulta que me da un error a la hora de recojerlo desde el javascript cuando se trata de interpretar esta sentencia eval(ajax.responseText), el mensaje de error me dice "invalid label", dejo la funcion y el datoJson de respuesta...

Código:
function cargar()
{
	var parametrosJson="[";
	var parametros=arguments;
	for(var i=0;i<parametros.length;i++)
	{
		parametrosJson+='"'+parametros[i]+'",';
	}
	parametrosJson=parametrosJson.substring(0,parametrosJson.length-1)+"]";
	alert(parametrosJson);
	ajax=instanciarXMLHTTP();
	//ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.onreadystatechange=function()
	{
		if(ajax.readyState==4)
		{
			if(ajax.status==200)
			{
				var comboValue=ajax.responseText;
				comboValue=eval(comboValue);
				for(var i=0;i<parametros.length;i++)
				{
					if(parametros[i]=='provincias')
					{
						var cboProvincias=document.getElementById("cboProvincias");
						var indi=1;
						var codigo,provincia;		
						/*for(var f=0;f<provincias.length;f++)
						{
							codigo=provincias[f].codprovincia;
							provincia=provincias[f].nombreprovincia;
							//provincias[f].codprovincia
							cboProvincias.options[indi]=new Option(provincia,codigo);
							indi++
						}*/			
					}
					if(parametros[i]=='formapagos')
					{
						
					}
					if(parametros[i]=='bancos')
					{
						
					}	
				}
				//alert(provincias[0].codprovincia);
					
			}
		}
	}
	
	ajax.open("post","../../Modelo/Objeto/cliente.php");
	ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	ajax.send('pedir='+parametrosJson);
	
}
respuesta del servidor

Código:
{"provincias":[{"codprovincia":"1","nombreprovincia":"Alava"},{"codprovincia":"2","nombreprovincia":"Albacete"
},{"codprovincia":"3","nombreprovincia":"Alicante"},{"codprovincia":"4","nombreprovincia":"Almeria"}
,{"codprovincia":"5","nombreprovincia":"Asturias"},{"codprovincia":"6","nombreprovincia":"Avila"},{"codprovincia"
:"7","nombreprovincia":"Badajoz"},{"codprovincia":"8","nombreprovincia":"Baleares"},{"codprovincia":"9"
,"nombreprovincia":"Barcelona"},{"codprovincia":"10","nombreprovincia":"Burgos"},{"codprovincia":"11"
,"nombreprovincia":"Caceres"},{"codprovincia":"12","nombreprovincia":"Cadiz"},{"codprovincia":"13","nombreprovincia"
:"Cantabria"},{"codprovincia":"14","nombreprovincia":"Castellon"},{"codprovincia":"15","nombreprovincia"
:"Ceuta"},{"codprovincia":"16","nombreprovincia":"Ciudad Real"},{"codprovincia":"17","nombreprovincia"
:"Cordoba"},{"codprovincia":"18","nombreprovincia":"La Coru"},{"codprovincia":"19","nombreprovincia"
:"Cuenca"},{"codprovincia":"20","nombreprovincia":"Gerona"},{"codprovincia":"21","nombreprovincia":"Granada"
},{"codprovincia":"22","nombreprovincia":"Guadalajara"},{"codprovincia":"23","nombreprovincia":"Guipuzcoa"
},{"codprovincia":"24","nombreprovincia":"Huelva"},{"codprovincia":"25","nombreprovincia":"Huesca"},
{"codprovincia":"26","nombreprovincia":"Jaen"},{"codprovincia":"27","nombreprovincia":"Leon"},{"codprovincia"
:"28","nombreprovincia":"Lerida"},{"codprovincia":"29","nombreprovincia":"Lugo"},{"codprovincia":"30"
,"nombreprovincia":"Madrid"},{"codprovincia":"31","nombreprovincia":"Malaga"},{"codprovincia":"32","nombreprovincia"
:"Melilla"},{"codprovincia":"33","nombreprovincia":"Murcia"},{"codprovincia":"34","nombreprovincia":"Navarra"
},{"codprovincia":"35","nombreprovincia":"Orense"},{"codprovincia":"36","nombreprovincia":"Palencia"
},{"codprovincia":"37","nombreprovincia":"Las Palmas"},{"codprovincia":"38","nombreprovincia":"Pontevedra"
},{"codprovincia":"39","nombreprovincia":"La Rioja"},{"codprovincia":"40","nombreprovincia":"Salamanca"
},{"codprovincia":"41","nombreprovincia":"Sta. Cruz de Tenerife"},{"codprovincia":"42","nombreprovincia"
:"Segovia"},{"codprovincia":"43","nombreprovincia":"Sevilla"},{"codprovincia":"44","nombreprovincia"
:"Soria"},{"codprovincia":"45","nombreprovincia":"Tarragona"},{"codprovincia":"46","nombreprovincia"
:"Teruel"},{"codprovincia":"47","nombreprovincia":"Toledo"},{"codprovincia":"48","nombreprovincia":"Valencia"
},{"codprovincia":"49","nombreprovincia":"Valladolid"},{"codprovincia":"50","nombreprovincia":"Vizcaya"
},{"codprovincia":"51","nombreprovincia":"Zamora"},{"codprovincia":"52","nombreprovincia":"Zaragoza"
}]}

Última edición por cancha; 21/04/2009 a las 12:18 Razón: error humano
  #2 (permalink)  
Antiguo 21/04/2009, 10:12
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: pasar array Json a php con ajax

Fijate si esto te sirve: http://www.disegnocentell.com.ar/notas2.php?id=225
(No creo que te sirva usándolo tal cual sino adaptándolo)
  #3 (permalink)  
Antiguo 04/05/2010, 09:23
 
Fecha de Ingreso: septiembre-2008
Mensajes: 12
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: invalid label en objeto json

hola, lo puedes solucionar poniendo parentesis a ambos lados del response "(" y ")"
ej. obj = eval('(' + ajax.responseText + ')');
  #4 (permalink)  
Antiguo 04/05/2010, 18:44
 
Fecha de Ingreso: junio-2007
Mensajes: 75
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: invalid label en objeto json

Cita:
Iniciado por chechopoker Ver Mensaje
hola, lo puedes solucionar poniendo parentesis a ambos lados del response "(" y ")"
ej. obj = eval('(' + ajax.responseText + ')');
si correcto pero, no es muy recomendable a cambio puedes emplear lo siguiente

Código Javascript:
Ver original
  1. var variable = new Function('return '+ ajax.responseText)();

que te da el mismo resultado... solo que es mas seguro que el eval()

saludos....
  #5 (permalink)  
Antiguo 04/05/2010, 18:52
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: invalid label en objeto json

Cita:
que te da el mismo resultado... solo que es mas seguro que el eval()
¿en serio? ¿sabias que eval y new Function trabajan de la misma forma? es decir, en ambos casos el interprete analiza el string de la misma forma, de modo que ambos sufren exactamente la misma maldicion.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 04/05/2010, 19:02
 
Fecha de Ingreso: junio-2007
Mensajes: 75
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: invalid label en objeto json

Cita:
Iniciado por zerokilled Ver Mensaje
¿en serio? ¿sabias que eval y new Function trabajan de la misma forma? es decir, en ambos casos el interprete analiza el string de la misma forma, de modo que ambos sufren exactamente la misma maldicion.
Bueno no lo sabia segun los articulos que lei recomiendan usar el new Function que el eval, en todo caso podrias postear un link que sustena lo que me dices...
por favor...

saludos...
  #7 (permalink)  
Antiguo 04/05/2010, 21:33
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: invalid label en objeto json

primero aclarar que no me refiero a que eval y Function producen el mismo resultado. evidentemente el uno no puede suplantar al otro porque ambos tiene propositos diferentes. a lo que venia el tema es que ambas funciones dependen del mismo concepto para operar: evaluar un string e interpretarlo como codigo javascript. por tanto, si eval es inseguro, Function tambien lo es al igual que cualquier otra funcion que dependa del mismo concepto (setTimeout, setInterval).

http://devlicio.us/blogs/sergio_pere...evil-eval.aspx
no se habla al detalle pero si se menciona superficialmente que eval y Function procesan de la misma forma el string. seccion Thank God I didn't know functions had constructors.

http://www.berniecode.com/blog/2007/...in-javascript/
el comentario de Douglas Crockford (desarrollador de Javascript en Yahoo) claramente comenta que Function e eval son relativos.

http://dev.opera.com/articles/view/e...script/?page=2
en este articulo se reclama que Function es menos malvado que eval porque segun no afecta el entorno que le rodea.
Cita:
The Function constructor is not quite as bad as eval, since using it does not affect the code surrounding the use, but it can still be quite slow.
hasta cierto punto es cierto. es decir, en el momento que se invoca el constructor Function, el codigo analizado no afecta su ambiente, pero si puede afectar cuando la funcion creada es invocada. por ejemplo,
Código:
var variable = "hello world";
var myFunc = new Function("variable = null;");
alert(variable); // muestra hello world;
myFunc();
alert(variable); // muestra null;
en el libro de Douglas Crockford, Javascript: The Good Parts, tiene una seccion llamada Bad Parts, y esto es un fragmento de lo que comenta acerca de eval.
Cita:
Iniciado por Javascript: The Good Parts
[...]
The eval function also compromises the security of your application because it grants too much authority to the eval'd text. And it compromises the performance of the language as a whole in the same way that the with statement does.

The Function constructor is another form of eval, and should similary be avoided.

The browser provides setTimeout and setInterval functions that can take string arguments or function arguments. When given string arguments, setTimeout and setInterval act as eval. The string argument form also should be avoided.

[...]
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 04/05/2010 a las 21:39
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:26.