Простое сохранение в JSON файле с помощью JQuery
Я опробовал все примеры, на которые я мог бы набрать руки, но я не могу просто сохранить данные JSON в файл JSON на моем хосте. Я хочу начать с простого, как можно большего метода сохранения, поэтому у меня есть место для начала.
Вот что я получил:
В основном у меня есть кнопка в моем index.html, который по клику должен сохранять данные в моем файле general.json(такое же место, что и index.html).
<button id="savebtn">Save</button>
С селектором id в myscript.js я делаю это:
$('#savebtn').click(function() {
var saveit = $('#calendar').fullCalendar( 'clientEvents');
var eventsholded = [];
$.each(saveit, function(index,value) {
var event = new Object();
event.id = value.id;
event.start = value.start;
event.end = value.end;
event.title = value.title;
event.allDay = value.allDay
eventsholded.push(event);
});
$.ajax
({
type: "GET",
dataType : 'json',
async: false,
url: 'general.json',
data: JSON.stringify(eventsholded),
success: function () {alert("Thanks!"); },
failure: function() {alert("Error!");}
});
Как вы можете видеть, я хочу хранить события из fullcalendar. Это не очень актуально, потому что он отлично работает до этого момента.
Если я предупрежу на экране JSON.stringify(eventsholded), вы увидите следующее:
[{"start":"2014-01-07T08:30:00.000Z","end":"2014-01-07T12:30:00.000Z","title":"Pumukli Pista","allDay":false},{"start":"2014-01-11T13:30:00.000Z","end":"2014-01-11T18:30:00.000Z","title":"Fanic Catalin","allDay":false}]
Теперь это именно то, что я хочу сохранить на сервере простым, быстрым, возможно, незащищенным, но очень простым способом. Просто чтобы я мог понять, как это работает, просто чтобы это было в мой файл general.json.
Часть $.ajax
ничего не делает в моем вышеприведенном коде. Даже не предупреждает "Ошибка". Остальная часть кода работает как ожидалось.
Теперь безопасность не важна. Я просто хочу узнать, как это работает.
Буду благодарен за любую помощь или полезные ссылки, которые имеют полные примеры. Спасибо!
Ответы
Ответ 1
$.ajax
самостоятельно не сохранит json файл, вам нужно направить свойство url
на серверную script, т.е. http://your.host/save_json.php
, которая создаст general.json
и напишет на нем свой вывод. Что-то вроде:
PHP:
<?php
$myFile = "general.json";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET["data"];
fwrite($fh, $stringData);
fclose($fh)
?>
Вам также необходимо изменить свойство data
в своем вызове ajax
на data: {data: JSON.stringify(eventsholded)}
, чтобы дать переменной GET собственное имя, которое можно получить из PHP:
JQuery
$.ajax
({
type: "GET",
dataType : 'json',
async: false,
url: 'http://your.host/save_json.php',
data: { data: JSON.stringify(eventsholded) },
success: function () {alert("Thanks!"); },
failure: function() {alert("Error!");}
});