2011-03-15 32 views

Respuesta

13

Esta es una pregunta un poco amplia.

Si quieres decir, ¿cómo hacer una solicitud del servidor y lo han tratado automáticamente como JSON en el camino de vuelta, que haría algo como esto:

dojo.xhrGet({ 
    url: "your/server/endpoint/here", 
    handleAs: "json", 
    load: function(obj) { 
     /* here, obj will already be a JS object deserialized from the JSON response */ 
    }, 
    error: function(err) { 
     /* this will execute if the response couldn't be converted to a JS object, 
      or if the request was unsuccessful altogether. */ 
    } 
}); 

Nota handleAs: "json" arriba, que dice dojo.xhrGet (o xhrPost, etc.) para intentar convertir la respuesta a un objeto JS antes de activar la devolución de llamada load.

http://dojotoolkit.org/reference-guide/dojo/xhrGet.html

Individualmente, si ya tiene usted mismo una cadena JSON y sólo tiene que convertirlo en un objeto JS, Dojo tiene dojo.fromJson(str) para esto (y dojo.toJson(obj) para la otra dirección).

+0

+1 Una respuesta muy completa. –

1

Con dojo 1.8: Añadir el ID del módulo "dojo/petición/xhr" a sus dependencias y xhr como argumento de devolución de llamada, entonces:

xhr("path/to/file.json", { 
     handleAs: "json" 
    }).then(function(obj){ 
     // do something with the obj    
    }, function(err){ 
     // Handle the error condition 

    }, function(evt){ 
     // Handle a progress event from the request if the 
     // browser supports XHR2 

    }); 
21

En Dojo 1.8+, para cargar un archivo JSON (no como XHR), use dojo/text para cargar el archivo, luego dojo/json para analizarlo. De esta manera:

require([ 'dojo/json', 'dojo/text!/path/to/data.json' ], 
    function(JSON, data) 
{ 
    var data = JSON.parse(data); 
}); 

Not the "!" después de dojo/texto, utilizado para especificar el archivo a cargar.

+0

No cerró el requerimiento. Necesitas agregar ");" al final de tu código – Laurence

+0

¡Reparado! Gracias, Laurence. – voidstate

+0

¿Cómo puedo agregar mi ruta de contexto en 'dojo/text! /path/to/data.json' cuando solicito el nombre del archivo? Algo como esto: location.pathname.replace (/ \/[^ /] * $ /, ''). – coder247

0

se puede hacer uso del módulo de E/solicitud dojo:

<script> 
    require(["dojo/request", function(request){ 
     request("patho/to/file.json" , {handleAs :"json"}).then(function(result){/*success*/} , function(err){/*Oops!*/}) 

    }); 
</script>