Tengo un archivo json en mi sistema de archivos. ¿Hay alguna forma de cargar contenido en variable?

Intenté esto:

vm.timeZones = require("timezones.json");

Pero da este error:

ReferenceError: require is not defined
0
Januka samaranyake 14 ene. 2017 a las 14:52

3 respuestas

La mejor respuesta

jQuery.getJSON () debería ayudar.

Enlace para referencia: JQuery.getJSON

$.getJSON("test.json", function(json) {
    console.log(json); // this will show the info it in firebug console
});


function loadJSON(callback) {   
  var xobj = new XMLHttpRequest();
      xobj.overrideMimeType("application/json");
  xobj.open('GET', 'my_data.json', true); // Replace 'my_data' with the path to your file
  xobj.onreadystatechange = function () {
        if (xobj.readyState == 4 && xobj.status == "200") {
          // Required use of an anonymous callback as .open will NOT return a value but simply returns undefined in asynchronous mode
          callback(xobj.responseText);
        }
  };
  xobj.send(null);  
}

function init() {
loadJSON(function(response) {
  // Parse JSON string into object
   var actual_JSON = JSON.parse(response);
 });
}
2
Ranadip Dutta 14 ene. 2017 a las 11:59
$http.get("timeZones.json")
  .then(function onSuccess(response) {
    // Handle success
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;         
    //...
    vm.timeZones = data;
  })
  .catch(function onError(response) {
    // Handle error
    var data = response.data;
    var status = response.status;
    var statusText = response.statusText;
    var headers = response.headers;
    var config = response.config;
    //...
  });

Para obtener más información, consulte Referencia de la API del servicio AngularJS $ http.

0
georgeawg 15 ene. 2017 a las 05:31

Probablemente no.

Si estaba leyendo los datos a través de HTTP en lugar de directamente desde un sistema de archivos, entonces podría usar el objeto XMLHttpRequest (o, en navegadores más nuevos, buscar) que Angular extrae a través de $http.

Si está usando Firefox, puede usar ese enfoque para leer archivos locales que están en el mismo directorio (o un subdirectorio de este) que el documento HTML. Otros navegadores tienen reglas de seguridad más estrictas.

Si permitiste que el usuario seleccionara el archivo (a través de un <input type="file">), entonces podrías usar la API FileReader.

0
Quentin 14 ene. 2017 a las 11:57