2010-10-09 4 views
19

J'écris une application web (enfin, ce sera finalement un widget Dashboard OS X, mais j'ai décidé de le prototyper d'abord comme une simple page web) qui doit en charger initialisation de données à partir d'un fichier JSON local. Mon code ressemble à ceci:Comment charger les fichiers JSON locaux en Javascript

function loadDatos() { 
    var xobj = new XMLHttpRequest(); 
    xobj.overrideMimeType("application/json"); 
    xobj.open('GET', 'datos.json', true); 
    xobj.onReadyStateChange = function() { 
     if (xobj.readyState == 4) { 
      var jsonTexto = xobj.responseText; 
      ProcessTheData(jsonTexto); 
     } 
    } 
    xobj.send(null); 
} 

La fonction s'appelle d'un événement onLoad() dans la balise BODY du fichier HTML. Maintenant, d'après ce que je vois lors du débogage, la fonction est exécutée, mais le gestionnaire d'événement onReadytStateChange n'est jamais appelé.

Que dois-je faire? Je pensais que c'était un peu étrange d'utiliser un XMLHttpRequest pour accéder à un fichier local, mais les nouveaux tutoriels que j'ai vu qui traitent de ce problème semblent dire que ça devrait marcher (les 99% de docs que j'ai vus parlent de charger JSON à partir d'un serveur distant, pas à partir d'un fichier local).

Je teste en utilisant Firefox 3.6.10, mais je l'ai aussi essayé avec Safari 4.

+2

Voilà pourquoi je poussais pour l'option d'une clause d'affectation à précéder une déclaration d'objet JSON en 2005 avant que tous les différents clients JSON langage de programmation se sont précipités vers une normalisation ad hoc: http: //web.archive.org/web/20060212113746/htmatters.net/htm/1/2005/07/evaling-JSON.cfm –

+0

Vous voulez l'application/json, mais si le fichier est local, il n'aura pas ce type mime . Essayez de commenter le remplacement – mplungjan

Répondre

Questions connexes