简体   繁体   English

简单的 JSON 文件产生未定义的错误 Javascript

[英]Simple JSON file produces Undefined error Javascript

I have a simple set of HTML and JS files that both spectacularly fail, and I can't figure out why:我有一组简单的 HTML 和 JS 文件都失败了,我不知道为什么:

<html>
 <head>
  <script type="text/javascript" src="data.json"></script>
 </head>
 <body>
 </body>
</html>
var data = '{"name" : "Phil Powell"}';
alert(data + ' ' + data.name + ' ' + data.type);

But every single time I try to open this up, I get the exact same error every single time:但是每次我尝试打开它时,每次都会遇到完全相同的错误:

{"name" : "Phil Powell"} undefined undefined

What am I doing wrong?我究竟做错了什么? All I want to do is parse an external JSON file, and I can't seem to do it.我想做的就是解析一个外部 JSON 文件,我似乎做不到。

Please help.请帮忙。

Thanks谢谢

var data = '{"name" : "Phil Powell"}';

remove the enclosing apostrophe lie shown below删除如下所示的封闭撇号谎言

var data = {"name" : "Phil Powell"};

You data is a string.你的数据是一个字符串。 You need to first convert data to object to access by key.您需要先将数据转换为 object 才能按键访问。

 var data = '{"name": "Phil Powell","type":"something"}'; var obj = JSON.parse(data); console.log(data + ' ' + obj.name + ' ' + obj.type);

Remove object quotes like:删除 object 引号,例如:

 var data = {"name": "Phil Powell", "type": "ABC"}; alert(data.name + ' ' + data.type);

I hope this helps我希望这有帮助

 var data = {"name": "Phil Powell", "type": "Mars Volta"}; console.log(data['name'] + ' ' + data['type']); var data = '{"name": "Phil Powell", "type": "Mars Volta"}'; var obj = JSON.parse(data); console.log(obj.name + ' ' + obj.type);

In two ways you can make it work,您可以通过两种方式使其工作,

1. Removing single quotes from the string 1.从字符串中去除单引号

var data = '{"name" : "Phil Powell","type":"something"}';

instead of this use below而不是下面的这种用法

var data = {"name": "Phil Powell","type":"something"};

console.log(data.name, data.type);

2. Convert your string to JSON object using JSON.parse() 2. 使用JSON.parse()将您的字符串转换为 JSON object

`var data = '{"name" : "Phil Powell","type":"something"}';`

`var obj = JSON.parse(data);`

`console.log(data.name, data.type);`

did you try src= data.js??你试过 src=data.js 吗?

 <script type="text/javascript" src="data.js"></script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM