web-dev-qa-db-fra.com

Enregistrement simple dans un fichier JSON avec JQuery

J'ai essayé tous les exemples sur lesquels je pourrais mettre la main, mais je ne peux pas simplement enregistrer les données JSON dans un fichier JSON sur mon hôte. Je veux commencer par une méthode de sauvegarde aussi simple que possible, donc j'ai un endroit pour commencer.

Voici ce que j'ai obtenu: Fondamentalement, j'ai un bouton dans mon index.html qui, en un clic, devrait enregistrer les données dans mon fichier general.json (même emplacement que index.html).

<button id="savebtn">Save</button>

Avec le sélecteur d'ID dans un myscript.js je fais ceci:

$('#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!");}
    });

Comme vous pouvez le voir, je veux stocker les événements de fullcalendar. Ce n'est pas très pertinent car cela fonctionne bien jusqu'à ce point. Si j'alerte à l'écran JSON.stringify (eventsholded) vous verrez ceci:

[{"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}]

Maintenant c'est exactement ce que je veux enregistrer sur le serveur de manière simple, rapide, peut-être pas sûre, mais très simple. Juste pour que je puisse commencer à comprendre comment cela fonctionne, juste pour l'avoir dans mon général. fichier json.

Le $.ajax part ne fait rien dans mon code ci-dessus. Pas même d'alerte "Erreur". Le reste du code fonctionne comme prévu.

La sécurité n'est pas importante maintenant. Je veux juste savoir comment cela fonctionne.

Je serai reconnaissant pour toute aide ou liens utiles contenant des exemples complets. Merci!

14
Laci

$.ajax Seul ne sauvera pas le fichier json, vous devez diriger la propriété url vers un script côté serveur, c'est-à-dire http://your.Host/save_json.php, Qui créera general.json et écrivez votre sortie dessus. Quelque chose comme:

PHP:

<?php
$myFile = "general.json";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = $_GET["data"];
fwrite($fh, $stringData);
fclose($fh)
?>

Vous devrez également modifier la propriété data dans votre appel ajax à data: {data: JSON.stringify(eventsholded)} pour donner à la variable GET un nom correct qui peut être récupéré depuis 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!");}
    });
26
Yeray Diaz Diaz