Я использую код этого сообщения, чтобы генерировать файлы artist.json и event.json каждый раз при сохранении, обновлении или удалении исполнителя (пользовательский тип сообщения) в Wordpress. Мой вопрос, вероятно, не связан с WP, поэтому я размещаю его здесь.json to itemhash отключается
Файл JSON используется как вход для типа theadhead .js. Этот typeahead дает странное поведение (см. this post), и теперь кажется, что что-то не так с тем, как файл json хранится в локальном хранилище.
Проблема, похоже, лежит в точке, где json-файл преобразуется в локальный элемент itemhash хранилища (в этом я действительно не испытываю). Файл json отформатирован как ["artist1", "artist2", "artist3", "..."]
, и если я использую вкладку «Ресурсы» в инструментах разработчика Chrome, я вижу, что json-файл преобразуется и хранится в локальном хранилище, но если я вставляю содержимое __Artists__itemHash
в txt-файл, я вижу, что в конце файл отключается. Я предполагаю, что это вызывает проблему с typeahead?
Содержимое из itemHash
{
"0":
{
"value":"test10",
"tokens": ["test10"],
"datum": {"value":"test10"}
},
"1":
{
"value":"test8",
"tokens":["test8"],
"datum":{"value":"test8"}
},
"2":
{
"value":"test7",
"tokens":["test7"],
"datum":{"value":"test7"}
},
и т.д ... В конце файла выглядит примерно так:
"278":
{
"value":"Luna // The file ends here...
Есть около 8000 художников в файле JSon в целом и этот файл (как в: все художники есть). Возможно, это связано с максимальным размером файла в локальном хранилище? Это единственное, что я могу сделать, надеюсь, кто-то знает, как работает этот локальный накопитель, и почему файл отключается.
Для справки, Javascript (добавлено Время_жизни для отладки):
$(document).ready(function() {
$('input.search-event').typeahead({
name: 'Events',
prefetch: '/media/json/events.json',
ttl: 0,
limit: 10
});
$('input.search-artist').typeahead({
name: 'Artists',
prefetch: '/media/json/artists.json',
ttl: 0,
limit: 10
});
});
UPDATE
Этот материал становится все страннее каждую минуту:
На вкладке сетевого разработчика в Chrome Инструменты Я не вижу artist.json и events.json. То же самое для FireBug в FF.
В веб-инспекторе Safari я вижу оба файла. Содержимое файла artist.json, по-видимому, сломано (при множестве пробелов где-то посередине файла, а затем продолжается с большим количеством записей). Но когда я вставляю содержимое в редактор, все записи, похоже, там.
Содержимое events.json похоже, все в порядке.
Если я добавляю запись в events.json, эта новая запись отображается в поле typeahead в Safari при сбросе Safari, но она не отображается в FF и Chrome, поэтому, вероятно, указывает на ошибку кэширования/localstorage.
Artists.json не работает во всех трех браузерах. Он выполняет автозапуск некоторых записей, но не последние добавленные (даже после сброса настроек Safari). Я действительно сходят с ума на этом ...
UPDATE 2
Когда я типа window.localStorage.clear();
в консоли в Chrome локальное хранилище будет удален. Когда я сейчас перезагружаю страницу, на вкладке сети отображаются элементы artist.json и events.json. Прогресс!Когда я добавляю элементы в оба файла, эти элементы не отображаются в поле typeahead, но добавленные элементы отображаются, если я снова очищу локальное хранилище.