25

我一直在尝试获取本地文件的正确路径。我有以下目录:

Resources ->
   data ->
       file.json
   js ->
     folder ->
        script.js
   html ->
      folder ->
         file1.html

我正在执行script.jsfile1.html使用 js 代码:

var answers = JSON.parse('../../data/file.json');
alert(answers);

但它不起作用,甚至警报都没有开始。怎么了?

我也试过这个:

function readJSON(file) {
    var request = new XMLHttpRequest();
    request.open('GET', file, false);
    request.send(null);
    if (request.status == 200)
        return request.responseText;
};

var temp = readJSON('../../data/file.json');
alert(temp);

在这种情况下,警报未定义。

4

7 回答 7

53

由于它在目录data/中,您需要执行以下操作:

文件路径是'../../data/file.json'

$.getJSON('../../data/file.json', function(data) {         
    alert(data);
});

纯JS:

   var request = new XMLHttpRequest();
   request.open("GET", "../../data/file.json", false);
   request.send(null)
   var my_JSON_object = JSON.parse(request.responseText);
   alert (my_JSON_object.result[0]);
于 2013-06-07T19:13:26.980 回答
8

此解决方案使用异步调用。它可能会比同步解决方案更好。

var request = new XMLHttpRequest();
request.open("GET", "../../data/file.json", false);
request.send(null);
request.onreadystatechange = function() {
  if ( request.readyState === 4 && request.status === 200 ) {
    var my_JSON_object = JSON.parse(request.responseText);
    console.log(my_JSON_object);
  }
}
于 2014-05-02T01:04:32.153 回答
4

加载本地 JSON 文件

使用这样的东西

$.getJSON("../../data/file.json", function(json) {
    console.log(json); // this will show the info in firebug console 
    alert(json);
});
于 2013-06-07T19:27:53.870 回答
2
var request = new XMLHttpRequest();
request.open("GET","<path_to_file>", false);
request.send(null);
var jsonData = JSON.parse(request.responseText);

这段代码对我有用。

于 2018-12-05T11:07:42.933 回答
0

如果Resources是根路径,最好的访问file.json方式是通过/data/file.json

于 2013-06-07T19:16:41.597 回答
0

我的工作代码案例是:

var request = new XMLHttpRequest();
request.open("GET", "<path_to_file>", false);
request.overrideMimeType("application/json");
request.send(null);
var jsonData = JSON.parse(request.responseText);
console.log(jsonData);
于 2018-12-24T15:48:20.430 回答
0

即使长时间回答,我这里是另一个不需要创建请求的。我创建了一个 lg.js 脚本,其中包含一个类和一些函数(setLg、de、en、...)每个“lg”函数(de、en、fr、...)都提供一个包含翻译的 json 对象。

"use strict"
class Lg {
  constructor() { this.tr = this.en(); }
  setLg(l) {
    if l == "de" this.tr = this.de(); 
    if l == "en" this.tr = this.en();
  de() {
   "item": "Artikel",
   "login": "Login"
  }
  en() {
   "item": "Item",
   "login": "login"
  }
 }
 var lg = new Lg(); //global accessable object

然后您可以通过“lg.tr.item”使用它您还可以创建一个小函数,检查“key”是否在 JSON 对象中以进行某种错误检查。

于 2021-09-17T08:40:56.053 回答