Como corregir el error “invalid label”. JSON

JSON(JavaScript Object Notation) es un formato de intercambio de datos muy ligero y fácil de implementar. Es simplemente una notación de objeto javascript que tiene mayor uso al realizar peticiones con AJAX lo cual hace menos engorrosa la manipulación de los datos de respuesta al compararlo con XML.

Alguna vez decidí cambiar de XML a JSON haciendo una aplicación con AJAX. Realicé mi control de peticiones de esta forma:

teniendo en cuenta que esta era la respuesta de la petición:

{ nombre : pepe gomez , pais : colombia }//JSON

Este era el código:

//functión que crea el objeto XMLHTTPRequest
function ajax_request()
{
     //sentencias que devuelven el objeto
}

//función que devuelve el objeto JSON
function get_json( ajax_object )
{
    ajax_object.onreadystatechange = function()
    {
        if( ajax_object.readyState == 4 )
          return ajax_object.responseText;//aquí se devuelve el texto de respuesta
    }
}

var _ajx = ajax_request();
var json_notation = get_json( _ajx );

var personal_data = eval(  json_notation  );

Lo que debería seceder al final es que a la variable personal_data se la asignaría el texto devuelto como si fuera un objeto javascript, por medio de la función eval, de modo que luego pudiera acceder al objeto de esta forma:

alert( personal_data.nombre ); //devuelve "pepe gomez"

Pero lastimosamente se genera el error “invalid label”, investigando encontre que al momento usar la función eval, primero lo ejecuta y luego lo asigna a la variable lo cual generaba un error ya que javascript cuenta con el antiguo bloque label que hiciera que viera esto:


{ nombre : pepe gomez ,...


Como un etiqueta de este tipo:

    
    
nombre :
//sentencias


La verdad no veia estos bloques desde PASCAL xD. Para corregir el problema necesitaba poner el texto devuelto entre parentesis:

  
   
var personal_data = eval( "(" +  json_notation + ")"  );


Así ya no se genera este error. :).

Anuncios

1 comment so far

  1. deiby on

    hola jseros.

    Tu ayuda siempre es buen, y este dato me salvara de mas de un apuro.

    gracias


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: