为什么我总是得到“Uncaught SyntaxError:Unexpected token u”来自Chrome? [英] Why I always get "Uncaught SyntaxError: Unexpected token u " from Chrome?

查看:152
本文介绍了为什么我总是得到“Uncaught SyntaxError:Unexpected token u”来自Chrome?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我花了整整一天的时间,谷歌搜索和搜索答案,但仍然无法弄清楚。

I have spent a whole day on this, googling and searching for answers but still could not figure out.

我的代码有点长而且效果很好Firefox但是从Chrome获得Uncaught SyntaxError:Unexpected token u。

My code is a bit long and it works well in Firefox but gets "Uncaught SyntaxError: Unexpected token u " from Chrome.

任何人都可以指出我错在哪里吗?提前致谢!

Can anyone points me out where I am wrong? Thanks in advance!

// when the page loads, list all the current contacts
$(document).ready(function(){

    // check if localStorage database exists
    if(!localStorage.getItem("customerDatabase")){

        // define a JSON object to hold all current address
        var contacts = {
            "users":[
                {
                    "id":"1",
                    "name":"dennis",
                    "email":"dennisboys@gmail.com"
                },
                {
                    "id":"2",
                    "name":"zoe",
                    "email":"zoeisfemale@gmail.com"             
                }
            ]   
        } // end of contacts JSON object

        // stringify the object 
        var stringObject = JSON.stringify(contacts);                

        // store it into localStorage database
        var storedDatabase = localStorage.setItem("customerDatabase", stringObject);                                            

    } else {
        // list all customers upon page loads
        listJSONCustomers();        
    }   

    // list all current contacts from JSON object in localStorage
    function listJSONCustomers(){

      var displayHTML = "";
      var i;

      // get the data from localStorage
      var storedDatabase = localStorage.getItem("customerDatabase");

      // parse the data from string to JSON object
      var parseObject = JSON.parse(storedDatabase); 

      // access the users key of the JSON object
      var userObject = parseObject.users;

      // get the length of the object (how many customers the database has)
      var contactsLength = userObject.length;     

      for(i=0; i<contactsLength; i++){
          var trElement = '<tr id="address' + (i+1) + '">';
          var tdId = '<td id="id' + (i+1) + '">' + userObject[i].id + '</td>';
          var tdName = '<td id="name' + (i+1) + '">' + userObject[i].name + '</td>';
          var tdEmail = '<td id="email' + (i+1) + '">' + userObject[i].email + '</td>';
          var tdButton = '<td id="button"><button id="editButton' + userObject[i].id + '">Edit</button> | <button id="deleteButton' + userObject[i].id + '">Delete</button></td>';

          displayHTML += trElement + tdId + tdName + tdEmail + tdButton + '</tr>';
      }     

      $('#address_list').html(displayHTML);           
    }       

    // add customer to database  
    $('#saveCustomer').click(function(){

       if( $('#customerName').val() !== "" && $('#customerEmail').val() !== "" ){

           var customerName = $('#customerName').val();
           var customerEmail = $('#customerEmail').val();

           // get the data from localStorage
           var storedDatabase = localStorage.getItem("customerDatabase");

           // parse the data from string to JSON object
           var parseObject = JSON.parse(storedDatabase);    

           // access the users key of the JSON object
           var userObject = parseObject.users;     

           // get the new entry
           var newCustomerObject = {
                                  "id": userObject.length + 1,
                                  "name": customerName,
                                  "email": customerEmail
                                  };

           // push the new entry into the object                                                            
           userObject.push(newCustomerObject);

           // convert the object into string for localStorage
           var stringObject = JSON.stringify(parseObject);         

           // store the JSON object into localStorage
           var storedDatabase = localStorage.setItem("customerDatabase", stringObject);

           // list all customes again every time a database receives a new entry
           listJSONCustomers();     

       } else {
          alert("Please enter customer's name and email.");  
       }

    }); // end of $('#saveCustomer').click();


});


推荐答案

在某些时候,你所做的事情已经破坏了价值你的LocalStorage用于该密钥。 LocalStorage只能存储字符串,因此如果您向其传递任何其他内容,它会将其转换为字符串。由于你的价值是'undefined',这意味着在某些时候,你可能偶然做过这样的事情:

At some point, something you did corrupted the value of your LocalStorage for that key. LocalStorage can only store strings, so if you pass anything else to it, it will convert it to a string. Since your value is 'undefined', that means that at some point, you probably did something like this on accident:

var value;
localStorage.setItem('key', value);

在这种情况下, undefined ,这不是一个字符串。保存后,它将被转换。不幸的是,undefined是无效的JSON。这意味着当它尝试解析时,它将抛出异常。

In this case, value is undefined, which is not a string. When this gets saved, it will be converted however. Unfortunately, "undefined" is not valid JSON. That means that when it tries to parse, it will throw an exception.

要解决您的问题,您应该使用 removeItem清除错误值

To fix your issue, you should clear the bad value out with removeItem.

localStorage.removeItem("customerDatabase");

这篇关于为什么我总是得到“Uncaught SyntaxError:Unexpected token u”来自Chrome?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆