4 votes

Peut-on générer un fichier JSON avec JavaScript ?

Je veux créer une page sur le domaine "example1.com" et obtenir/analyser un fichier JSON sur un autre domaine "example2.com/json.json". Est-ce que le fichier json peut être généré avec JavaScript (sur example2.com) ? Je pense que cela peut être fait avec php, mais je veux le faire avec javascript. S'il n'est pas possible de générer un fichier json avec javascript, est-il possible d'obtenir/analyser un objet à partir d'un fichier javascript ? EX : "example1.com" à "example2.com/js.js"

MODIFIER : Ok, il n'est pas possible d'obtenir/analyser un objet à partir d'un fichier javascript, car c'est du côté client. Donc ma seule option est de générer un fichier JSON. Est-il possible de le faire avec JavaScript ? Je sais que ce n'est probablement pas la meilleure façon, mais je veux le faire en JS, pas en PHP.

2voto

anthonybell Points 596

Json est simplement un objet javascript au format de chaîne afin que javascript puisse créer des données json :

   var animal = {name: "chat", sound: "miaou"};
   json = JSON.stringify(animal); //json est une chaîne JSON

javascript ne permet pas les appels Ajax vers d'autres sites (cross-site scripting) car c'est un risque de sécurité. Vous pouvez envisager d'utiliser jsonP qui contourne cette règle.

Vous ne pouvez pas non plus appeler un autre site web ou votre propre serveur pour exécuter du javascript et retourner quelque chose, car javascript ne s'exécute que dans le navigateur du client (à moins que vous n'utilisiez un serveur javascript comme node.js). Un serveur doit être en écoute quelque part pour une demande.

1voto

John Points 195

Pour analyser un objet JSON avec Javascript, j'utiliserais jQuery.

http://api.jquery.com/jQuery.parseJSON/

Comme l'a dit anthonybell, la plupart des navigateurs n'autorisent pas le cross-site scripting, donc vous devez vous pencher sur le jsonP ou travailler sur le même domaine.

De plus, pour générer du JSON, vous pouvez créer un objet en utilisant javascript puis le parcourir et le sortir, ou simplement sortir vos données au format JSON que vous pouvez lire ici:
http://www.w3schools.com/json/

0voto

Sam Deering Points 203

Vous pouvez utiliser JSONP - enveloppez essentiellement votre JSON dans une fonction de rappel sur domain2.com comme ceci :

jsonCallback(
    {
        "sites":
        [
            {
                "siteName": "JQUERY4U",
                "domainName": "http://www.jquery4u.com",
                "description": "#1 jQuery Blog for your Daily News, Plugins, Tuts/Tips & Code Snippets."
            },
            {
                "siteName": "BLOGOOLA",
                "domainName": "http://www.blogoola.com",
                "description": "Expose your blog to millions and increase your audience."
            },
            {
                "siteName": "PHPSCRIPTS4U",
                "domainName": "http://www.phpscripts4u.com",
                "description": "The Blog of Enthusiastic PHP Scripters"
            }
        ]
    }
);

Ensuite, vous pouvez l'appeler depuis domain1.com comme ceci :

(function($) {
var url = 'http://www.jquery4u.com/scripts/jquery4u-sites.json?callback=?';

$.ajax({
   type: 'GET',
    url: url,
    async: false,
    jsonpCallback: 'jsonCallback',
    contentType: "application/json",
    dataType: 'jsonp',
    success: function(json) {
       console.dir(json.sites);
    },
    error: function(e) {
       console.log(e.message);
    }
});

})(jQuery);

0voto

NickSlash Points 1927

Vous ne pouvez pas remplacer PHP par JavaScript (sauf si vous avez NodeJS ou quelque chose).

Générer votre JSON en utilisant PHP retournera du JSON au client.

Si vous laissez Javascript générer votre JSON, cela retournera du Javascript au client. Si vous faites cela, il n'y a même pas de point à utiliser JSON.

Si vous voulez qu'un document JSON soit généré (à partir de sources de données sur votre serveur) au lieu d'un fichier JSON statique, vous aurez besoin d'un type de programmation côté serveur.

Si vous voulez utiliser JavaScript, vous devrez installer et configurer NodeJS (et éventuellement d'autres services comme un serveur web, ou créer un serveur avec NodeJS) et écrire des scripts qui génèrent et servent votre JSON.

Créer les scripts pour générer le JSON (et créer le serveur de base pour l'héberger) n'est pas si difficile. Installer et configurer Node peut être plus difficile.

Si vous avez déjà accès à PHP (et au serveur web) sur votre serveur, utilisez-le.

Si votre fichier de sortie peut être statique (et que vous utilisez Windows), vous pourriez éventuellement utiliser JScript pour générer votre fichier statique. Cela vous demanderait d'exécuter physiquement le script (ou éventuellement de créer une tâche planifiée pour le lancer pour vous). Ainsi, vous remplaceriez votre fichier statique par un JSON nouvellement généré de temps en temps. Probablement pas ce que vous voulez cependant!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X