Подтвердить что ты не робот

Простое сохранение в 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 ничего не делает в моем вышеприведенном коде. Даже не предупреждает "Ошибка". Остальная часть кода работает как ожидалось.

Теперь безопасность не важна. Я просто хочу узнать, как это работает.

Буду благодарен за любую помощь или полезные ссылки, которые имеют полные примеры. Спасибо!

4b9b3361

Ответ 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!");}
    });