Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Dojo
Dojo Forum d'entraide sur le framework Dojo
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2011, 14h38   #1
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
Par défaut manipulation du fichier json

bonjour ,jai un probleme lors de l'ajout de nouveau objet dans mon fichier json
j'arrive pas a enregister un nouveau objet sur mon json

mon fichier json compte.json
Code :
1
2
3
4
5
6
 
{ identifier: 'user',
  label: 'user',
  items: [
     { user:'T', pwd:'Alex', email:'iijijij'}
]}
et ma fonction d'ajout :
Code :
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
 
 
function creation()
{
    var item = {
        user: dojo.byId('user').value,
        pwd: dojo.byId('pwd').value,
        email: dojo.byId('email').value
 
       };
var store = new dojo.data.ItemFileWriteStore({url: "compte.json"});
store.newItem(item);
store.saveItem(item);
 
function saveDone(){
  alert("Done saving.");
}
function saveFailed(){
  alert("Save failed.");
}
store.save({onComplete: saveDone, onError: saveFailed});
 
 
 
 
}
je sais pas ce qui cloche dans mon code ! sinon n'aurait il pas une autre facon de proceder ?
merci d'avance
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 11h00   #2
Membre éprouvé
 
Gibot Daniel
Inscription : janvier 2010
Messages : 313
Détails du profil
Informations personnelles :
Nom : Gibot Daniel
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2010
Messages : 313
Points : 439
Points : 439
La fonction save de l'objet store ne permet pas de sauvegarder le fichier json.

C'est uniquement une commande utilisée dans le cadre de manipulation dans les datagrid et autres objets utilisant les itemFileWriteStore. Cela permet de ne pas avoir de messages comme quoi il y a eu des modifications effectuées dans l'objet avant de passer dans une autre page.

Si tu souhaites sauvegarder tes données, il te faut envoyer les données via un xhrPost à ton code java qui lui peut modifier ton fichier json.

Javascript n'a pas les permissions pour faire ce genre de manipulation (donc dojo non plus).

Par exemple :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
function creation()
{
        user = dojo.byId('user').value;
        pwd = dojo.byId('pwd').value;
        email = dojo.byId('email').value;
 
        var xhrArgs = {
		url:"SaveUser",
		postData: "user="+user+"&pwd="+pwd+"&email="+email,
		handleAs: "text",
		error: function(error) {
			rapportErreur(error);
	        }
        }
 
         //Call the asynchronous xhrPost
         var deferred = dojo.xhrPost(xhrArgs);
         deferred.addCallback(function(data) {
                 alert("User sauvegardé!");
         }
};
Daniel_Gibot est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 03/01/2011, 14h35   #3
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
merci pour la reponse
un code java par exp un fichier jsp du type ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@page import="java.io.FileWriter"%>
<%@page import="java.io.File"%>
<%@page import="java.io.IOException"%>
<%
 
	String filename = "compte.json";
	String path = getServletContext().getRealPath("/");
 
	try{
		FileWriter fw = new FileWriter(path+filename);
		String input = request.getParameterNames().nextElement().toString();
		fw.write(input);
 
		fw.close();
	}
	catch(IOException e)
	{
		System.out.println(e.getMessage());
	}
%>
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 14h40   #4
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
merci pour la reponse
un code java par exp un fichier jsp du type ?
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<%@page import="java.io.FileWriter"%>
<%@page import="java.io.File"%>
<%@page import="java.io.IOException"%>
<%
 
	String filename = "compte.json";
	String path = getServletContext().getRealPath("/");
 
	try{
		FileWriter fw = new FileWriter(path+filename);
		String input = request.getParameterNames().nextElement().toString();
		fw.write(input);
 
		fw.close();
	}
	catch(IOException e)
	{
		System.out.println(e.getMessage());
	}
%>
jai testé ,et ca me dit que lobjet est bien enregistré:
mais quand je passe a l'authentification :
Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
function authentification()
{
   //cree un objet store avec le contenu du json
var authStore = new dojo.data.ItemFileReadStore({
		jsId:'store1',
		//data: {items: [
		//		{login:'ut1', mdp:'Alex'},
		//		{login:'ut2', mdp:'country'}
		//		]}
                //ou
               url:'compte.json'
	});
        //permet de lire le contenu du store
	authStore.fetch({
                //requete ou l'on va ajouter les valeurs saisies dans les champs
		query: {
				user:dojo.byId('login').value, //champ login
				pwd:dojo.byId('mdp').value}, //champ mdp
                //a la fin de la recherche
		onComplete: function (items,request){
                        //on scanne le resultat contenu dans items
			for (i = 0; i < items.length; i++) {
			var item1 = items[i];
				alert(authStore.getValue(item1,"user"));
			}
                        //si rien n'est trouve
			if(i==0){
				alert("mauvais login / mot de passe");
			}
                        else{
   //document.getElementById("h1").style.display = "block";
   //document.getElementById("grid").style.display = "table-cell";
   //document.getElementById("h3").style.display = "block";
   //document.getElementById("a").style.display = "none";
   //document.getElementById("dec").style.display = "block";
 
document.getElementById("authentif").style.display = "none";
document.getElementById("dec").style.display = "block";
document.getElementById("authentif1").style.display = "none";
document.getElementById("dec1").style.display = "block";
document.getElementById("opajout").style.display = "block";
document.getElementById("img").style.display = "block";
document.getElementById("id_test").style.display = "block";
dojo.byId('login').value="";
   dojo.byId('mdp').value="";
}
il me sort cette erreur !
Code :
this._arrayOfTopLevelItems is undefined
jsuis coincé sur cela ,j'espere connaitre lerreur !!
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 15h29   #5
Membre éprouvé
 
Gibot Daniel
Inscription : janvier 2010
Messages : 313
Détails du profil
Informations personnelles :
Nom : Gibot Daniel
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2010
Messages : 313
Points : 439
Points : 439
Est-ce une erreur JavaScript ?
Si ce n'est pas le cas, j'ai bien peur de ne pouvoir aider. Je ne connais pas le java.
Daniel_Gibot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 15h42   #6
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
si ,c'est une erreur javascript
en faite je te resume le truc :
j'ai une fonction d'ajout de nouveau compte sur un fichier json (compte.json)
une fois un compte crée ,il doit pouvoir s'authentifier a l'aide d'une fonction dauthentification pour acceder a un tableau ..
donc je procede comme suit :
unfichier json:
Code :
1
2
3
4
5
{ identifier: 'user',
  label: 'user',
  items: [
     { user:'T', pwd:'Alex', email:'iijijij'}
]}
la fonction d'ajout d'un nouveau objet dans le json ,celle que tu ma donné:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function creation()
{
        user = dojo.byId('user').value;
        pwd = dojo.byId('pwd').value;
        email = dojo.byId('email').value;
 
        var xhrArgs = {
		url:"save_1.jsp",
		postData: "user="+user+"&pwd="+pwd+"&email="+email,
		handleAs: "text",
		error: function(error) {
			rapportErreur(error);
	        }
        }
 
         //Call the asynchronous xhrPost
         var deferred = dojo.xhrPost(xhrArgs);
         deferred.addCallback(function(data) {
                 alert("User sauvegardé!");
         }
};
cette fonction va utiliser un code java comme tu as dit : save_1.jsp

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
<%@page import="java.io.FileWriter"%>
<%@page import="java.io.File"%>
<%@page import="java.io.IOException"%>
<%
 
	String filename = "compte.json";
	String path = getServletContext().getRealPath("/");
 
	try{
		FileWriter fw = new FileWriter(path+filename);
		String input = request.getParameterNames().nextElement().toString();
		fw.write(input);
 
		fw.close();
	}
	catch(IOException e)
	{
		System.out.println(e.getMessage());
	}
%>
jusqua maintenant tout va bien ,il me renvoi : User sauvegardé!

quand je passe a l'authentification :
Code :
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
function authentification()
{
   //cree un objet store avec le contenu du json
var authStore = new dojo.data.ItemFileReadStore({
		jsId:'store1',
		//data: {items: [
		//		{login:'ut1', mdp:'Alex'},
		//		{login:'ut2', mdp:'country'}
		//		]}
                //ou
               url:'compte.json'
	});
        //permet de lire le contenu du store
	authStore.fetch({
                //requete ou l'on va ajouter les valeurs saisies dans les champs
		query: {
				user:dojo.byId('login').value, //champ login
				pwd:dojo.byId('mdp').value}, //champ mdp
                //a la fin de la recherche
		onComplete: function (items,request){
                        //on scanne le resultat contenu dans items
			for (i = 0; i < items.length; i++) {
			var item1 = items[i];
				alert(authStore.getValue(item1,"user"));
			}
                        //si rien n'est trouve
			if(i==0){
				alert("mauvais login / mot de passe");
			}
                        else{
   //document.getElementById("h1").style.display = "block";
   //document.getElementById("grid").style.display = "table-cell";
   //document.getElementById("h3").style.display = "block";
   //document.getElementById("a").style.display = "none";
   //document.getElementById("dec").style.display = "block";
 
document.getElementById("authentif").style.display = "none";
document.getElementById("dec").style.display = "block";
document.getElementById("authentif1").style.display = "none";
document.getElementById("dec1").style.display = "block";
document.getElementById("opajout").style.display = "block";
document.getElementById("img").style.display = "block";
document.getElementById("id_test").style.display = "block";
dojo.byId('login').value="";
   dojo.byId('mdp').value="";
}
il me resort la fameuse erreur :
Code :
this._arrayOfTopLevelItems is undefined
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 15h52   #7
Membre éprouvé
 
Gibot Daniel
Inscription : janvier 2010
Messages : 313
Détails du profil
Informations personnelles :
Nom : Gibot Daniel
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2010
Messages : 313
Points : 439
Points : 439
D'accord !

As-tu regardé ce que contient le fichier "compte.json" ?
Est ce que cela correspond bien au formatage d'un fichier json comme ce que tu as au début ?
Daniel_Gibot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2011, 22h37   #8
Futur Membre du Club
 
Inscription : juin 2010
Messages : 80
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : juin 2010
Messages : 80
Points : 19
Points : 19
enfin de compte,je suis passé par une base de donnée
merci comme meme
execrable est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2011, 08h55   #9
Membre éprouvé
 
Gibot Daniel
Inscription : janvier 2010
Messages : 313
Détails du profil
Informations personnelles :
Nom : Gibot Daniel
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations forums :
Inscription : janvier 2010
Messages : 313
Points : 439
Points : 439
Oui je pense que c'est plus sur que le fichier json
Daniel_Gibot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h42.


 
 
 
 
Partenaires

Hébergement Web