Почему я всегда получаю сообщение "Uncaught SyntaxError: Неожиданный токен u" из Chrome? - программирование

Почему я всегда получаю сообщение "Uncaught SyntaxError: Неожиданный токен u" из Chrome?

Я потратил целый день на это, поигрывая и искал ответы, но все еще не мог понять.

Мой код немного длинный, и он хорошо работает в Firefox, но получает "Неиспользуемый SyntaxError: Неожиданный токен u" из Chrome.

Может ли кто-нибудь указать мне, где я ошибаюсь? Спасибо заранее!

// 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":"[email protected]"
                },
                {
                    "id":"2",
                    "name":"zoe",
                    "email":"[email protected]"             
                }
            ]   
        } // 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 name and email.");  
       }

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


});
4b9b3361

Ответ 1

В какой-то момент что-то вы испортили значение вашего LocalStorage для этого ключа. LocalStorage может хранить только строки, поэтому, если вы передадите что-нибудь еще, он преобразует его в строку. Поскольку ваше значение 'undefined', это означает, что в какой-то момент вы, вероятно, сделали что-то подобное в случае аварии:

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

В этом случае value есть undefined, который не является строкой. Когда это будет сохранено, оно будет преобразовано. К сожалению, "undefined" недействителен JSON. Это означает, что когда он пытается разобрать, он выдает исключение.

Чтобы устранить проблему, вы должны очистить это значение с помощью removeItem.

localStorage.removeItem("customerDatabase");