未捕获的SyntaxError:无效或意外的令牌script.js:

时间:2017-07-07 02:23:38

标签: javascript

我有一个JSON文件,我保存为flipkart.json:

flipkart = '[{
       "signup1":
        { 
                "firstname":  "ravi",
                "lastname" :  "kota",
                "mobileno" :   9555558039,
                "DOB"      :  "19-Mar-1980",
                "emailid"  :  "kota.raavi@gmail.com",
                "password" :  "password"
           }}]';

我写了一个Javascript文件,如下所示,我保存为script.js:

function load()
{
  var mydata = JSON.parse(flipkart);
  //alert(mydata[0].firstname);
  //alert(mydata[0].lastname);
  alert(ravikota);

 }

我的HTML代码是:

<html>
 <head>
    <title>askyb - Load JSON File Locally by Javascript Without 
    JQuery</title>
    <script type="text/javascript" src="C:\Users\Kota 
      Ravi\Desktop\rainbow\flipkart.json"></script>
    <script type="text/javascript" src="C:\Users\Kota 
   Ravi\Desktop\rainbow\script.js"></script>
   </head>
    <body onload="load()">
    askyb - Load JSON File Locally by Javascript Without JQuery
   </body>
</html>

当我尝试在同一目录中打开html文件时,HTML控制台会将错误显示为:

Uncaught SyntaxError: Invalid or unexpected token
    script.js:3 Uncaught ReferenceError: flipkart is not defined
    at load (script.js:3)
    at onload (rainbow.html:7)

我想知道为什么控制台无法识别我的flipkart.json文件。谢谢。

1 个答案:

答案 0 :(得分:0)

您的JSON无效,如果您想在不使用Javascript的情况下包含它,那么您从技术上讲只是在其中创建一个包含对象数组的文件。 JSON文件不能像脚本一样包含在页面中,然后在您尝试完成时被引用。

此外,如果您要将其创建为有效的JSON,则必须看起来更像这样。但在你的情况下,这不会解决问题。

[
  {
    "signup1": {
      "firstname": "ravi",
      "lastname": "kota",
      "mobileno": 9555558039,
      "DOB": "19-Mar-1980",
      "emailid": "kota.raavi@gmail.com",
      "password": "password"
    }
  }
]

让我们修复您的代码。首先,将flipkart.json重命名为flipkart.js并更改HTML中的脚本包含以便首先包含它:

flipkart = [{
       "signup1":
        { 
                "firstname":  "ravi",
                "lastname" :  "kota",
                "mobileno" :   9555558039,
                "DOB"      :  "19-Mar-1980",
                "emailid"  :  "kota.raavi@gmail.com",
                "password" :  "password"
           }}];

这将创建一个名为flipkart的全局变量,可以从其他脚本和页面中的任何位置访问该变量。我建议阅读全局变量的缺点,你的方法虽然有效,但仍然存在缺陷。

在其中,我们正在创建一个数组并用对象填充它。这只是一个标准数组和Javascript对象,它不是JSON。

最后,在script.js内,用var mydata = JSON.parse(flipkart);或更好的方式替换此行var mydata = flipkart;,直接引用flipkart而不在您的mydata中创建type: 'Polygon'变量脚本。