我花了整整一整天的时间,在Google上搜索并寻找答案,但仍然不知道。
我的代码有点长,可以在Firefox中正常运行,但是从Chrome获得“ Uncaught SyntaxError:Unexpected token u”。
谁能指出我做错了什么?提前致谢!
// 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'
,这意味着在某个时候,您可能偶然地做了这样的事情:
var value;
localStorage.setItem('key', value);
在这种情况下,value
is
undefined
,不是字符串。保存后,将对其进行转换。不幸的是,"undefined"
不是有效的JSON。这意味着,当它尝试解析时,它将引发异常。
要解决您的问题,您应该使用清除不良价值removeItem
。
localStorage.removeItem("customerDatabase");
问题内容: 我在MooTools脚本中运行AJAX调用,在Firefox中运行正常,但是在Chrome中出现错误,我无法确定原因。注释掉代码以确定错误代码在什么地方不会产生任何结果,我认为这可能与返回JSON有关。在控制台中检查,我看到返回的JSON是这样的: 我没有看到任何问题,为什么会发生此错误? 问题答案: 我刚刚解决了这个问题。导致标准Request调用出现问题的原因是,这是我改用的代码:
问题内容: 我正在尝试开始在ReactJS中构建网站。但是,当我尝试将JS放在单独的文件中时,我开始收到此错误:“ Uncaught SyntaxError:Unexpected token <”。 我尝试添加到JS文件的顶部,但没有解决任何问题。以下是HTML和JS文件。关于出什么问题有什么想法吗? HTML JS 编辑:我意识到我需要添加到包括我的着陆器代码的脚本标签。但是,添加并重新加载后,
问题内容: 我正在尝试开始在ReactJS中构建网站。但是,当我尝试将JS放在单独的文件中时,我开始收到此错误:“ Uncaught SyntaxError:Unexpected token <”。 我尝试添加到JS文件的顶部,但没有解决任何问题。以下是HTML和JS文件。关于出什么问题有什么想法吗? 的HTML JS 编辑:我意识到我需要添加到包括我的着陆器代码的脚本标签。但是,添加并重新加载后
问题内容: 我从网络服务返回的JSON遇到问题。看起来JSON缺少引号,但是当我在JSON中添加引号时,出现错误。这是错误消息:’Uncaught SyntaxError:意外的标记o。当我将字符串记录到控制台时:[对象对象],[对象对象] 这是一些模拟错误的示例代码: 这是相同的代码,在字符串两边用单引号引起来。有用 但是,当我尝试在字符串中添加引号时,就像我在实际代码中似乎需要的那样,它失败了
问题内容: 尝试传递以下字符串时出现语法错误: 我知道当我使用双引号时,错误来自链接。 如果我使用单引号,则没有问题,但是数据是从服务器端获取的,我无法控制要传入的内容,因此只能在我这一边进行控制。 到目前为止,我从互联网上阅读的内容尝试了以下操作: 先使用,然后再使用。我可以解析没有问题,但是当我尝试循环数据时会出现问题。循环不是将其作为JSON循环,而是将数据作为字符串并循环每个单个文本。 转
问题内容: 是什么导致第三行出现此错误? 打开控制台以查看错误 问题答案: 是一个对象。(从对象文字创建) 用于将包含JSON表示法的 字符串 转换为Javascript对象。 您的代码将对象转换为字符串(通过调用),以尝试将其解析为JSON文本。 默认返回,这是无效的JSON;因此错误。