IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[JSON] Impossible de modifier mon JSON sur Serveur


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 0
    Points
    0
    Par défaut [JSON] Impossible de modifier mon JSON sur Serveur
    Bonjour,

    Je ne comprends pas pourquoi mon fichier JSON ne se modifie pas sur mon serveur.
    Je récupère bien mon JSON que je convertie en Obj
    Je modifie l'objet et j'affiche bien la modification de la case
    La requêtes xhr3 est bien au code 200...

    Merci pour vos lumières

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
     
    window.onload = function() {
     
        var xhr2 = getXMLHttpRequest();
        // Chargement de la carte en Json
        xhr2.open("GET", './maps/map6.json', false);
        xhr2.send();
        if(xhr2.readyState != 4 || (xhr2.status != 200 && xhr2.status != 0)) // Code == 0 en local
        throw new Error("Impossible de charger la carte nommée \"" + './maps/map6.json' + "\" (code HTTP : " + xhr2.status + ").");
        var map6JsonData = xhr2.responseText;
        // Analyse des données
        var map6Data = JSON.parse(map6JsonData);
     
        alert("Case 1/1 de map 6 " + map6Data['terrain'][1][1]);
     
        map6Data['terrain'][1][1] = 0;
     
        alert("Case 1/1 de map 6 après changement " + map6Data['terrain'][1][1]);
     
        var xhr3 = getXMLHttpRequest();
        xhr3.open("POST", './maps/map6.json', false);
        xhr3.setRequestHeader('Content-Type', 'application/json');
        xhr3.send(JSON.stringify(map6Data));
        alert("code HTTP : " + xhr3.status);
     
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Tu as quelque chose coté serveur qui enregistre ou modifie le json ?

  3. #3
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 102
    Points : 44 862
    Points
    44 862
    Par défaut
    Bonjour,
    surprenant quand même ces deux appels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr2.open("GET", './maps/map6.json', false);
    // ...
    xhr3.open("POST", './maps/map6.json', false);
    avec la même URL .json !

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Tu as quelque chose coté serveur qui enregistre ou modifie le json ?
    A priori non mais effectivement cela pourrait être le fait que le fichier est "occupé" ?

    Sinon ma classe Map() qui dessine la Map à partir du JSON fait aussi une requête quand elle est appelée :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function Map(nom) {
     
    	// Création de l'objet XmlHttpRequest
    	var xhr = getXMLHttpRequest();
    	// Chargement de la carte en Json
        xhr.open("GET", './maps/' + nom + '.json', false);
        xhr.send(null);
        if(xhr.readyState != 4 || (xhr.status != 200 && xhr.status != 0)) // Code == 0 en local
        	throw new Error("Impossible de charger la carte nommée \"" + '././maps/' + nom + '.json' + "\" (code HTTP : " + xhr.status + ").");
        var mapJsonData = xhr.responseText;
     
        // Analyse des données
        var mapData = JSON.parse(mapJsonData);

    Citation Envoyé par NoSmoking Voir le message
    Bonjour,
    surprenant quand même ces deux appels
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr2.open("GET", './maps/map6.json', false);
    // ...
    xhr3.open("POST", './maps/map6.json', false);
    avec la même URL .json !

    Si je comprends bien en fait je fais donc deux requêtes et deux interrogations ?
    J'ai vraiment cherché à comprendre le fonctionnement de ça.
    Il faudrait refermer la requête xhr2 avant d'en refaire une ?
    avec xhr2.abort() ?

    Sinon je passe fais plutôt ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        var xhr2 = getXMLHttpRequest();
        xhr2.open("GET", './maps/map6.json', false);
        xhr2.send();
        //...
        var map6JsonData = xhr2.responseText;
        // Analyse des données
        var map6Data = JSON.parse(map6JsonData);
     
        map6Data['terrain'][1][1] = 0;
     
        xhr2.open("POST", './maps/map6.json', false);
        xhr2.setRequestHeader('Content-Type', 'application/json');
        xhr2.send(JSON.stringify(map6Data));
    Cela aboutit au même résultat le fichier n'est pas changé !

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    un XHR ne fait qu'aller lire des données coté serveur.
    Ce n'est pas le fait de modifier les données coté client qui modifiera celle coté serveur.
    Une fois les données modifiées coté client, il faut encore retourner sur le serveur pour les modifier...

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 10
    Points : 0
    Points
    0
    Par défaut
    Je comprends bien,
    Cependant je trouve partout que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xhr2.open("POST", './maps/map6.json', false);
        xhr2.setRequestHeader('Content-Type', 'application/json');
        xhr2.send(JSON.stringify(map6Data));
    permet de le faire...
    tu as une piste sur la bonne manière de faire ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Il faut utiliser PUT pour que le json se mette à jour

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    Sinon un script coté serveur qui récuoère le get ou post et écrase ton fichier json coté serveur

Discussions similaires

  1. [Sécurité] Modifier php.ini sur serveur distant
    Par guy2004 dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2009, 18h10
  2. Erreur d'exécution 5 lorsque je mets mon application sur serveur
    Par amirad dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/12/2008, 10h14
  3. Erreur d'exécution 438 lorsque je mets mon application sur serveur
    Par amirad dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 04/12/2008, 16h24
  4. Impossible de modifier 1 Bouton sur une feuille
    Par ddanie dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/07/2007, 19h34
  5. [C#] impossible de lancer mon appli sur un autre PC
    Par xtream dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/09/2006, 15h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo