0

jsonファイルを取得するためのjavascriptファイルがあり、成功した場合は機能を実行し、そうでない場合は「エラー」という警告ウィンドウが表示されますが、構文は正しいように見えますが、毎回エラーの警告ウィンドウ。

これらは2つのファイルです

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"
        }
    ]
}
4

2 に答える 2

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 のポリフィルもあるため、サポートされていないブラウザーでも機能します。

于 2013-04-10T00:52:58.477 に答える
1

「デバッグ」と呼ばれるものを行う必要があります。jQuery が渡す引数を取得するようにハンドラーを書き直してerrorから、console.log を使用してそれらを出力するか、ブレークポイントを設定してデバッガーで検査します。エラーの署名は次のとおりです。

タイプ: 関数( jqXHR jqXHR, String textStatus, String errorThrown )

リクエストが失敗した場合に呼び出される関数。関数は 3 つの引数を受け取ります。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト、発生したエラーの種類を説明する文字列、およびオプションの例外オブジェクト (発生した場合) です。2 番目の引数 (null 以外) に指定できる値は、"timeout"、"error"、"abort"、および "parsererror" です。HTTP エラーが発生すると、errorThrown は「Not Found」や「Internal Server Error」などの HTTP ステータスのテキスト部分を受け取ります。

于 2013-04-10T01:03:00.920 に答える