Piszę aplikację internetową (cóż, w rzeczywistości będzie to widżet Dashboard OS X, ale zdecydowałem się najpierw go prototypować jako prostą stronę), który musi załadować niektóre inicjowanie danych z lokalnego pliku JSON. Mój kod wygląda następująco:Jak załadować lokalne pliki JSON w 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);
}
Funkcja sprawdzony z onLoad() wydarzenia w znaczniku BODY pliku HTML jest. Teraz, z tego, co widzę podczas debugowania, funkcja jest wykonywana, ale procedura obsługi zdarzeń onReadytStateChange nigdy nie jest wywoływana.
Co należy zrobić? Pomyślałem, że trochę dziwne jest użycie XMLHttpRequest w celu uzyskania dostępu do pliku lokalnego, ale nowe samouczki, które widziałem, które dotyczą tego problemu, wydają się sugerować, że powinien działać (99% dokumentów, które widziałem, mówi o tym, jak załadować JSON ze zdalnego serwera, a nie z lokalnego pliku).
jestem testowania za pomocą Firefoksa 3.6.10, ale Próbowałem zostały również z Safari 4.
Dlatego właśnie pchał dla opcji klauzuli przypisania poprzedzające deklarację obiektu JSON z powrotem w 2005 roku, zanim wszystkie różne klienci JSON język programowania rzucili się w kierunku standaryzacji ad hoc: http: //web.archive.org/web/20060212113746/htmatters.net/htm/1/2005/07/evaling-JSON.cfm –
Chcesz aplikacji/json, ale jeśli plik jest lokalny, nie będzie tego typu MIME . Spróbuj skomentować zastąpienie – mplungjan