2015-06-04 3 views
1

У меня есть файл JSON, хранящийся в той же папке как файл HTML для веб-страницы, над которой я работаю. Этот HTML-файл имеет скрипт с функцией, которая принимает данные в переменной в форме JSON. У меня возникли проблемы с получением содержимого файла JSON в переменной в моем HTML-файле, который будет использоваться функцией. Я запускаю файл HTML локально.Parse JSON Файл в Javascript

Я попытался следующие:

$(function(){ 
    $.getJSON("./data.json", function(jsdata) { 
     json = jsdata; 
     console.log(json); 
    }); 
}); 

Однако это приводит только в: XMLHttpRequest cannot load file. Есть ли способ разобрать локальный файл JSON в Javascript?

JSON был подтвержден с помощью http://jsonlint.com/

Использования "data.json" дает ту же ошибку, как и раньше.

+2

Попробуйте удалить '.' в URL-адрес – Tushar

+0

@Tushar same error – Dagrooms

+0

Это зависит от вашего местоположения вашего Javascript-файла, где вы называете эту функцию getJSON. Если код JS находится на одном уровне с json-файлом, то действительно удалите. другой мудрый ../ должен сделать трюк – Rotan075

ответ

3

Не используйте .. Если файл JSON находится в той же папке, что и местоположение вашей JS работает (т.е. ваш HTML-файл), он должен быть таким:

$(function(){ 
    $.getJSON("data.json", function(jsdata) { 
     json = jsdata; 
     console.log(json); 
    }); 
}); 
+0

XMLHttpRequest не может загрузить файл: /// C: /Users/grooms/Desktop/SampleTimeline/data.json. Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https, chrome-extension-resource. – Dagrooms

+2

Вам нужно запустить html с веб-сайта, а не из каталога в файловой системе. Для получения дополнительной информации см. Здесь: http://stackoverflow.com/questions/371875/local-file-access-with-javascript – Donal

+2

Полезно знать. Я получаю награду за день рождения. – Dagrooms

1

Dot в URL является причиной проблемы

Используйте это:

$.getJSON("/data.json", function(jsdata) { 
     json = jsdata; 
     console.log(json); 
    }); 
+0

XMLHttpRequest не может загрузить файл: /// C: /data.json. Запросы на кросс-начало поддерживаются только для схем протокола: http, data, chrome, chrome-extension, https, chrome-extension-resource. – Dagrooms

0

попробуйте этот код

$.ajax({ 
    url: "./data.json", // or "/data.json", 
    type: "GET", 
    dataType: "json" 
}) 
1

URL, при условии, неправильно ,

Используйте следующее:

$(function() { 
    var baseUrl = 'http://....'; // Your base url of app 

    // Use the absolute URL in here 
    $.getJSON(baseUrl + "/data.json", function (jsdata) { 
     json = jsdata; 
     console.log(json); 
    }); 
}); 
2

Вы не можете загрузить локальный файл с помощью $.getJSON в JQuery. Вы должны установить действительный url вашего файла внутри вашего проекта, а не локальный путь к файлу, поскольку браузер не позволяет ему загружаться по какой-либо причине безопасности.