Javascript 使用html在浏览器中显示JSON字典

Javascript 使用html在浏览器中显示JSON字典,javascript,html,json,browser,jquery,Javascript,Html,Json,Browser,Jquery,所以我在StackExchange和其他网络论坛上看了看了看,看了看,看了看,看了看不同的答案,我仍然不明白这一点。 我有一个.json文件,其中包含excel文档中的信息。 我想在web浏览器上显示它->最简单的方法似乎是用html编写它 如何用html打开JSON文件??我很高兴在html脚本上显示整个JSON文件,但我希望能够将is设置为变量,并像普通JSON对象一样从中提取内容 我有下面的代码来创建一个表,这正是我想要做的——但是真正的JSON对象在一个单独的文件中 <html&g

所以我在StackExchange和其他网络论坛上看了看了看,看了看,看了看,看了看不同的答案,我仍然不明白这一点。 我有一个.json文件,其中包含excel文档中的信息。 我想在web浏览器上显示它->最简单的方法似乎是用html编写它

如何用html打开JSON文件??我很高兴在html脚本上显示整个JSON文件,但我希望能够将is设置为变量,并像普通JSON对象一样从中提取内容

我有下面的代码来创建一个表,这正是我想要做的——但是真正的JSON对象在一个单独的文件中

<html>
<head>
<title>Creation of array object in javascript using JSON</title>
<script language="javascript" >

document.writeln("<h2>JSON array object</h2>");

var books = { "Pascal" : [ 
      { "Name"  : "Pascal Made Simple", "price" : 700 },
      { "Name"  : "Guide to Pascal", "price" : 400 }
   ],                       
   "Scala"  : [
      { "Name"  : "Scala for the Impatient", "price" : 1000 }, 
      { "Name"  : "Scala in Depth", "price" : 1300 }
   ]    
}    

var i = 0
document.writeln("<table border='2'><tr>");
for(i=0;i<books.Pascal.length;i++)
{   
   document.writeln("<td>");
   document.writeln("<table border='1' width=100 >");
   document.writeln("<tr><td><b>Name</b></td><td width=50>"
   + books.Pascal[i].Name+"</td></tr>");
   document.writeln("<tr><td><b>Price</b></td><td width=50>"
   + books.Pascal[i].price +"</td></tr>");
   document.writeln("</table>");
   document.writeln("</td>");
}

for(i=0;i<books.Scala.length;i++)
{
   document.writeln("<td>");
   document.writeln("<table border='1' width=100 >");
   document.writeln("<tr><td><b>Name</b></td><td width=50>"
   + books.Scala[i].Name+"</td></tr>");
   document.writeln("<tr><td><b>Price</b></td><td width=50>"
   + books.Scala[i].price+"</td></tr>");
   document.writeln("</table>");
   document.writeln("</td>");
}
document.writeln("</tr></table>");
</script>
</head>
<body>
</body>
</html>

使用JSON在javascript中创建数组对象
document.writeln(“JSON数组对象”);
var books={“Pascal”:[
{“名称”:“帕斯卡变得简单”,“价格”:700},
{“名称”:“帕斯卡指南”,“价格”:400}
],                       
“斯卡拉”:[
{“名称”:“不耐烦的Scala”,“价格”:1000},
{“名称”:“深度Scala”,“价格”:1300}
]    
}    
变量i=0
文件。书面形式(“”);

对于(i=0;i,您需要使用AJAX提取JSON

这将要求您运行web服务器,因为某些浏览器(如Chrome)会阻止对本地资源的请求。还请记住,AJAX和JSON请求将仅在同一域内工作(同源策略),否则您必须使用JSONP

如果您可以使用jQuery(因此这是一种最简单的方法),请看这里:


希望有帮助!

我发现您没有包含标签,因此我将提供两个普通的
javascript
解决方案:

  • 如果文件位于可访问目录中,则可以按如下方式提取数据:

    <script src="mydata.json.js"></script>
    
    按如下方式定义JSON对象:

    if (xhr.readyState === 4 && xhr.status === 200) {
        data = JSON.parse(xhr.responseText); // This now contains the JSON object.
    }
    
    原件:

    [{ "name" : "John", "date" : "01-27-2014"  }]
    
    修改为
    javascript

    var data = '[{ "name" : "John", "date" : "01-27-2014"  }]';
    
    并将其保存到名为
    mydata.json.js
    的纯文本文档中,例如(双扩展名与内容本身无关)

    因此,它成为一个有效的
    javascript
    文件,您可以将其加载到html中,如下所示:

    <script src="mydata.json.js"></script>
    
    称之为:

    loadJSON('my-file.json',
        function(data) { console.log(data); },
        function(xhr) { console.error(xhr); }
    );
    
    更新

    您可以创建一个全局变量,例如
    数据
    ,以存储检索到的JSON并按如下方式重新定义函数:

    if (xhr.readyState === 4 && xhr.status === 200) {
        data = JSON.parse(xhr.responseText); // This now contains the JSON object.
    }
    
    请注意,
    xhr.responseText
    是原始JSON字符串,
    JSON.parse(…)
    函数返回包含该JSON数据的javascript集合


  • 您可以使用服务器端语言(如PHP)来实现这一点,而无需ajax。您可以将原始JSON包含到Javascript变量中

    下面是使用PHP包含该文件的示例:

    <script>
    
        //JSON included via PHP
        var books = <?php include('books.json'); ?>;
    
    </script>
    

    要在初始HTML页面之外加载JSON,需要使用后台请求(通常称为AJAX)。加载JSON数据的最简单方法是使用Javascript库,该库包含可靠的文档、示例等,以及一个简单的界面来完成您想做的事情。感谢所有回复的人!我将尝试所有这些答案,看看哪一个最适合我的项目。后续问题:很多人提到了jquery(@Brian)这被广泛认为是“正确”的方法吗?我应该继续下载吗?jQuery不是“正确”的方法这样做的方式,但与调用jQuery的
    getJSON
    方法相比,进行自己的AJAX调用是一个非常复杂的过程。您的代码向我表明,您对Javascript开发相对较新(我们都曾经是:P),因此,像jQuery这样的库可能是一个很好的出发点:)谢谢Brian,我会研究一下。我真的很喜欢这个答案(数字1),但这是一个预先存在的json文件(我认为我应该添加,而不是由我创建的),虽然我能够添加.js扩展名,但我不确定如何添加**var data='[{…}]'**参数。@Isa只需用引号
    '
    或双引号
    若要将其设置为字符串并将其分配给
    数据
    变量,请检查我的更新答案。对不起,我不知道如何执行此操作。我的代码需要能够使用json文件,而不需要我去操作实际的.json文件。如何远程添加变量(因为没有更好的词)?对不起,现在我明白了。在这种情况下,您最好使用REST方法(第二种解决方案)检索该文件,但该文件需要位于同一个域或同一个服务器中。非常感谢,我会给它一个快照谢谢您的帮助!那么我该如何调用这些对象呢?“书,帕斯卡,名字”?换句话说,PHP是否会更改中的格式?(这里是非常新的。很抱歉)PHP不会更改您的文件,它将按原样包含该文件。您将能够像访问任何javascript对象一样访问JSON对象。
    { "Pascal" : [ 
          { "Name"  : "Pascal Made Simple", "price" : 700 },
          { "Name"  : "Guide to Pascal", "price" : 400 }
       ],                       
       "Scala"  : [
          { "Name"  : "Scala for the Impatient", "price" : 1000 }, 
          { "Name"  : "Scala in Depth", "price" : 1300 }
       ]    
    }