我有一个javascript文件,用于获取json文件,如果它成功,它将执行一个函数,如果不是,它会显示一个警告窗口说“错误”,但虽然语法看起来正确,我我每次都会收到一个错误的警报窗口。
这是两个文件
var firstName = [];
var lastName = [];
var email = [];
var password = [];
var i;
function insertRecord() {
$.ajax({
type: "GET",
url: "studio.json",
dataType: "json",
success: insertData,
error: function(){ alert("error"); }
});
function insertData(data) {
if (localStorage) {
for (i = 0; i < data.User.length; i++) {
localStorage.setItem(firstName[i], data.User.firstName[j]);
localStorage.setItem(lastName[i], data.User.lastName[j]);
localStorage.setItem(email[i], data.User.email[j]);
localStorage.setItem(password[i], data.User.password[j]);
}
localStorage.setItem(firstName[i], document.getElementById("firstName").value);
localStorage[firstName[i]] = document.getElementById("firstName").value;
localStorage.setItem(lastName[i], document.getElementById("lastName").value);
localStorage[lastName[i]] = document.getElementById("lastName").value;
localStorage.setItem(email[i], document.getElementById("email").value);
localStorage[email[i]] = document.getElementById("email").value;
localStorage.setItem(password[i], document.getElementById("password").value);
localStorage[password[i]] = document.getElementById("password").value;
alert(localstorage[firstName]);
}
else
alert("Your browser does not support Local Storage");
}
}
json文件名为studio.json
{
"Students":[
{ "first":"Arnold", "last":"Matthews", "class":"Tiny Tutus" },
{ "first":"Keesha", "last":"Franklin", "class":"Breakdancing"},
{ "first":"Dorothy", "last": "Ann", "class":"Acro"},
{ "first":"Wanda", "last": "Li", "class":"Ballet"},
{ "first":"Phoebe", "last": "Terese", "class":"Tap"}
],
"Classes":[
{ "name":"Tiny Tutus", "time":"450","AMPM":"PM", "students":12},
{ "name":"Breakdancing", "time":"230","AMPM":"PM", "students":6},
{ "name":"Acro", "time":"810","AMPM":"AM", "students":15},
{ "name":"Tap", "time":"520","AMPM":"PM", "students":11},
{ "name":"Ballet", "time":"620","AMPM":"PM", "students":15},
{ "name":"Jazz", "time":"740","AMPM":"AM", "students":8 }
],
"User":[
{
"firstName": "Michael",
"lastName": "Jones",
"username": "MJone",
"email": "Michael.Jones@email.com",
"password": "qwerty"
},
{
"firstName": "Michelle",
"lastName": "Lee",
"username": "MLee",
"email": "Michelle.Lee@gmail.com",
"password": "asdfgh"
},
{
"firstName": "Andrew",
"lastName": "Bob",
"username": "ABob",
"email": "Andrew.Bob@hotmail.com",
"password": "zxcvbn"
}
]
}
答案 0 :(得分:1)
你知道你可以只存储JSON字符串,然后再解析它吗?
function storeUser() {
return $.ajax({
type: "GET",
url: "studio.json",
dataType: "text"
});
}
if ( ! localStorage.getItem('user') ) {
storeUser().done(function(json) {
user = JSON.parse( json );
localStorage.setItem('user', json);
});
}else{
user = JSON.parse( localStorage.getItem('user') );
}
但你必须等待异步调用再次完成!
MDN对于localStorage也有polyfill,所以它也适用于不支持的浏览器。
答案 1 :(得分:1)
你需要做一些叫做“调试”的事情。重写error
处理程序以获取jQuery传递给它的参数,然后使用console.log打印它们,或断点并在调试器中检查它们。这是错误的签名:
类型:函数(jqXHR jqXHR,String textStatus,String errorThrown)
请求失败时要调用的函数。该 函数接收三个参数:jqXHR(在jQuery 1.4.x中, XMLHttpRequest)对象,一个描述错误类型的字符串 发生了,并且发生了一个可选的异常对象。可能 第二个参数的值(除了null)是“超时”,“错误”, “abort”和“parsererror”。发生HTTP错误时,errorThrown 接收HTTP状态的文本部分,例如“未找到” 或“内部服务器错误。”