javascript - 获取 json 文件时出错

标签 javascript jquery html json

我有一个 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"
        }
    ]
}

最佳答案

您知道可以只存储 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 还有一个 polyfill对于 localStorage,因此它也适用于不支持的浏览器。

关于javascript - 获取 json 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15915082/

相关文章:

html - Firefox 无法识别复选框的背景图像

HTML/CSS 留在标题中

javascript - 更改responsiveCollapse模型中的默认+/-图标

JavaScript/jQuery 提交函数/AJAX 调用可以从控制台运行,而不是从链接文件运行

javascript - 单击同一行中的 anchor 标记,从表中选择同一行中的输入标记

javascript - JQuery:延迟加载 JQuery 和 '$ not defined'

javascript - 如何禁用 networkD3/d3Network 网络图中的鼠标悬停效果(GNU R 包)

javascript - VueJS 复选框更新

javascript - Onmouseover/out 在 jQuery 中停用和重新激活

javascript - Jquery 可使用动态 div 上的上下箭头进行排序