localStorage не получает значения после обновления страницы - PullRequest
4 голосов
/ 17 сентября 2010

Я пытаюсь протестировать функцию html5 localStorage.По какой-то причине, всякий раз, когда я пытаюсь извлечь значение из хранилища после обновления страницы, я получаю только возвращенные нулевые значения.(Если я попытаюсь получить значения в той же функции, в которой я их установил, я смогу их правильно восстановить).

Одна вещь: загружаемый html / javascript запрашивается с локального диска(например, я использую строку: "file: /// C: /testLocalStore.html" , чтобы перейти к файлу, а не запрашивать его с веб-сервера. Может ли это вызвать localStoreпроблемы, которые я вижу?

(Я хотел бы опубликовать пример полного кода, но у меня возникли некоторые проблемы с форматированием. Я опубликую его в ближайшее время).

<html> <head> <title>test local storage</title>
<base href="http://docs.jquery.com" />
<script src="http://code.jquery.com/jquery-1.3.js"></script>
<script type="text/javascript">

function savestuff()
    {
        var existingData = localStorage.getItem("existingData");
        if( existingData === undefined || existingData === null )
        {
            // first time saving a map.
            existingData = $("#mapName").val();
        }
        else
        {
            existingData = existingData + "," + $("#mapName").val();
        }

    localStorage.setItem("existingData", existingData);
    // test is non-null here, it was properly retrieved.
    var test = localStorage.getItem("existingData");
}

$(document).ready( function init()
{
    // existing data is always null. 
    var existingData = localStorage.getItem("existingData");
    if( existingData !== null )
    {
        var existingDataListHtml = existingData.split(",");
        existingDataListHtml = $.each(existingData, function(data) {
                return "<li>" + data + "<\/li>";
            });

        $("#existingData").html("<ul>" + existingDataListHtml + "<\/ul>");
    }
} );
</script> 
</head> <body> 
        <form id="loadFromUser" onsubmit="savestuff();">
            <input id="mapName" type="text">
            <input type="submit" value="save">
        </form>
    <div id="existingData"> </div>
</body> </html>

1 Ответ

9 голосов
/ 17 сентября 2010

Да, загрузка файла локально означает, что он не имеет источника.Поскольку localStorage использует политику того же источника для определения доступа к хранимым данным, неизвестно, что произойдет, когда вы будете использовать их с локальными файлами, и, скорее всего, они не будут сохранены.

Вам потребуется хостВаш файл на веб-сервере, чтобы иметь правильное происхождение;Вы можете просто запустить Apache или любой другой сервер локально и получить к нему доступ через localhost.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...