2013-05-08 2 views
0

Я довольно новичок в javascript/jQuery/Json. Я создаю себе локальное приложение (сейчас нет клиентской стороны). прямо сейчас у меня есть простая форма (входные данные и отправка) и хотелось бы получить данные от пользователя с помощью javascrip/JQuery, а затем построить объект JSON и сохранить его в файле. Мне удалось получить входные данные с помощью jQuery, и с помощью JSON.strigify() у меня есть объект JSON. Единственное, что я не знаю, как писать в файл с JS. я искал решение и понял, что мне может понадобиться использовать PHP для этого, поскольку JS не предназначен для изменения файлов. вот мой код:javascript/jquery локальное приложение, использующее json как мой DB

HTML форма:

<form name="portfolio" id="portfolio" method="post" onsubmit="getform()"> 
    <p>General</p> 
     Portfolio Name: <input type="text" id="portfolioName" name="portfolioName"><br> 
     Owner First Name: <input type="text" id="ownerFName" name="ownerFName"><br> 
     Owner Last Name: <input type="text" id="ownerLName" name="ownerLName"><br> 
     <p>Risk Management</p> 
     %stocks : <input type="text" id="stocksPerc" name="stocksPerc"><br> 
    <input type="submit" value="submit"> 
</form> 

JS код

function getform() { 

    var portfolioName = document.portfolio.portfolioName.value; 
    var ownerFname = document.portfolio.ownerFName.value; 
    var ownerLname = document.portfolio.ownerLName.value; 
    var stocksPerc = document.portfolio.stocksPerc.value; 

    var myJsonObject =JSON.stringify({ 
     "general": { 
      "portfolioName": portfolioName, 
      "ownerFname": ownerFname, 
      "ownerLname": ownerLname 
     }, 
     "riskManagement": { 
      "stocksPerc": stocksPerc 
     } 
    }); 


    alert(myJsonObject); 


    event.preventDefault(); 
}; 

сейчас в "myJsonObject" У меня есть объект JSON, который я хотел бы написать локальный файл. позже я хотел бы прочитать этот файл и, возможно, обновить некоторые из значений там.

Может кто-то, пожалуйста, помогите мне понять, как я могу записать его в файл? вы можете попробовать загрузить page, который запускает мой код. надеюсь, что это сработает для вас.

примечание: программирование - это моя область интереса, но я не изучал его, я все изучаю, так что извините, если я спрошу вещи, которые заставляют вас ослепить на мгновение :). также это первый вопрос, который я пишу здесь, не стесняйтесь сказать, нужно ли мне улучшить.

Благодаря Сиван

обновление + уточнение: Спасибо за ответы, ребята, LocalStorage что-то я не знал о. от того, что я понимаю о localStorage, это только хорошо для работы в одном домене/местоположении. (я встретил this question на сайте). что, если я хочу вариант запуска приложения из разных мест - скажем, будет только один человек, обновляющий данные JSON, без необходимости синхронизации/блокировки и тому подобного. прямо сейчас мои файлы (JS, JSON ..) сохраняются в Dropbox, вот как я могу использовать приложение из разных мест сегодня, у меня нет другого сервера.

2'nd обновить: я попробовал LocalStorage решение я уже предложил и даже несмотря на его большой потенциал, его не совсем то, что я ищу, так как мне нужно данные JSON доступны в более чем в одном месте (например, я буду использовать мой рабочий стол и ноутбук). Я был бы рад, если бы у вас были другие предложения.

Еще раз спасибо.

ответ

0

Проверьте HTML5 localStorage API. Вы сможете сохранить свои объекты JSON и получить их. Они будут храниться в виде пар ключ-значение. Вы не можете писать в файл с помощью JS AFAIK.

+0

Действительно, JS не предназначен для записи файлов. localStorage кажется интересной идеей, но мне также нужна возможность запуска приложения из разных мест/доменов, поэтому мне нужно, чтобы мои данные JSON были доступны из всех мест. теперь нет необходимости блокировать/синхронизировать, так как я единственный, кто использует это приложение. – sivan

+0

Ваше решение с использованием Dropbox лучше, чем все, что я могу придумать. Хороший! – tjordan

0

Не используйте файл как хранилище, используйте localStorage: http://diveintohtml5.info/storage.html. Если вам нужно сохранить информацию о области сеанса, вы должны использовать sessionStorage, помните, что последнее не является постоянным.

Пример того, как вы будете использовать его:

var item = { 
    "general": { 
    "portfolioName": portfolioName, 
    "ownerFname": ownerFname, 
    "ownerLname": ownerLname 
    }, 
    "riskManagement": { 
    "stocksPerc": stocksPerc 
    } 
} 
// set item, you should think up of a unique key for each item 
localStorage.setItem('your-key', item); 

// remove it if no longer needed, you don't have a lot of space 
localStorage.removeItem('your-key'); 
+0

Привет, Альберто, спасибо за ваш ответ. Я добавил локальное хранилище в свой код, и, хотя я считаю его отличной функцией, мне это действительно не помогает, поскольку мне нужно долгое время сохранять данные + использовать его в разных местах, а не только на моем рабочем столе дома. я не могу полагаться на разные емкости хранилища разных бриттеров, мне нужно будет сэкономить большое количество данных и т. д. – sivan

+0

Хорошо, тогда это не подходящее решение ^^ –

0

Сохранение файлов возможно в некоторых браузерах, но это, вероятно, будет удален в будущем - так что я бы не использовать его, если вы должны. В этой статье показано, как - http://updates.html5rocks.com/2011/08/Saving-generated-files-on-the-client-side

Вы можете отправить JSON на сервер и использовать сервер для создания загрузки файла (задать новый вопрос, если тот, что вы ищете)

и, наконец, - ты вы хотите сохранить файл? если вы хотите сохранить и восстановить данные, тогда есть лучшие альтернативы (например, localStorage, cookies, indexDb)

+0

спасибо iftah, я обновил свой Q после прочтения вашего ответ. если возможно, я хотел бы знать, что вы думаете. – sivan

+0

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

+0

, но чтобы ответить на ваш вопрос в любом случае - локальное хранилище * локально * - оно появится только в одном компьютере в одном браузере (т. Е. Если вы откроете веб-страницу в firefox, у него будет другое локальное хранилище, чем хром), и если вы его откроете в firefox на другом компьютере у него будет другое местное хранилище. Существует разные localstorage для разных доменов - так что у вас будет такое же локальное хранилище для всех веб-страниц под dl.dropboxusercontent.com – Iftah

Смежные вопросы