0

我有这个 html 代码,它应该检索一个本地 json 文件并让它解析和字符串化到本地存储。我想测试代码,但是当我填写表单并运行它时,它说 ReferenceError: insertRecord is not defined in Firefox console。

任何帮助将不胜感激。谢谢你。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Register</title>
<link href="css/navigation.css" rel="stylesheet" type="text/css">
<link href="css/body.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.css" />
<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>
<script src="store.js" type="text/javascript"></script>
<script type="text/javascript">
var i;
var user;
var txt;

$(document).ready(function () {
    $.ajax({
    type: "GET",
    url: "studio.json",
    dataType: "json",
    success: getUser,
    error: function() {alert("retrieval error"); }
});
});

function getUser(data) {
if (localStorage) {
    if (!localStorage.getItem('user')) {
        user = JSON.parse(data.User);
        localStorage.setItem('user', user);
    }

    else {
        String item = localStorage.getItem('user');
        user = JSON.parse(item);
    }
}

else
    alert("Local Storage not supported");
}

function insertRecord() {
$.ajax({
    type: "GET",
    url: "studio.json",
    dataType: "json",
    success: insertUser,
    error: function(){ alert("retrieval error"); }
});

function insertUser() {
    txt = { firstName: document.getElementById("firstName").value,
            lastName: document.getElementById("lastName").value,
            userName: document.getElementById("userName").value,
            email: document.getElementById("email").value,
            password: document.getElementById("password").value
          };
    localStorage.setItem('user', user + JSON.stringify(txt));
}
}

</script>
</head>

<body>
<img src="images/Dance etc logo LARGE.jpg" width="263" height="150" alt="Dance Etc Logo" />
<hr />
<div data-role="header">
    <h1>Dance Etc.</h1>
</div>

<div data-role="content" >
    <h1>Register</h1>
    <form method="post" action="" id="register" name="form">
    <label>First Name: </label>
    <input type="text" id="firstName" /><br />
    <label>Last Name: </label>
    <input type="text" id="lastName" /><br />
    <label>Username: </label>
    <input type="text" id="userName" /><br />
    <label>Email: </label>
    <input type="text" id="email" /><br />
    <label>Password: </label>
    <input type="password" id="password" /><br />
    <input type="submit" value="Register" onClick="insertRecord()" />
    </form>
</div>

<div data-role="footer">
    <a href="Dance_Program">Contact Us</a>
    <a href="Register">Policy</a>
    <a href="Login">History</a>
</div>

4

1 回答 1

0

在您的代码中,您有以下行:

String item = localStorage.getItem('user');

这不是有效的 JavaScript,因此会抛出SyntaxError: Unexpected identifier,从而阻止对 JavaScript 代码的其余部分进行评估。
但是,当您尝试insertRecord在 HTML 中附加内联时,它会在触发时尝试运行,但无法调用未评估的代码。

您应该考虑使用element.addEventListener. 此外,缩进代码也可以帮助您进行调试。

var i, user, txt;

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "studio.json",
        dataType: "json",
        success: getUser,
        error: function () {
            alert("retrieval error");
        }
    });
});

function getUser(data) {
    if (localStorage) {
        if (!localStorage.getItem('user')) {
            user = JSON.parse(data.User);
            localStorage.setItem('user', user);
        } else {
            item = localStorage.getItem('user');
            user = JSON.parse(item);
        }
    } else
        alert("Local Storage not supported");
}

function insertRecord() {
    $.ajax({
        type: "GET",
        url: "studio.json",
        dataType: "json",
        success: insertUser,
        error: function () {
            alert("retrieval error");
        }
    });

    function insertUser() {
        txt = {
            firstName: document.getElementById("firstName").value,
            lastName: document.getElementById("lastName").value,
            userName: document.getElementById("userName").value,
            email: document.getElementById("email").value,
            password: document.getElementById("password").value
        };
        localStorage.setItem('user', user + JSON.stringify(txt));
    }
}
于 2013-04-10T10:18:08.673 回答