11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour je voudrais représenter ceci en JSON

function LivreBiblio (url,title,date,zone,tableCible)
{
	this.titre= titre;
	this.auteur = auteur;
	this.datePub = datePub; 
	this.categorie = categorie; //zone 
	this.livreSimilaire= livreSimilaire[]

}


Merci d'apporter les corrections qu'il faut!
Modifié par olk1free (27 Jul 2007 - 11:23)
Salut

Euh, il faudrait savoir ce qui est potentiellement un tableau, ce qui est une unique, et ce qui peut être une nested hashmap.
Il nous manque en effet une information capitale ici : le type des propriétés.

Au cas où voici un exemple complètement HS donnant un aperçu de la syntaxe à utiliser pour différents types de données :

var json = {
'nombre_entier' : 12345,
'nombre_reel' : 3.14159,
'chaine' : "Hello world !",
'tableau_de_nombres' : [1, 2, 3, 4, 5],
'tableau_de_chaines' : ["A", "B", "C", "D", "E"],
'sous_objet' : {
// Propriétés du sous-objet avec la même syntaxe que l'objet principal...
}
'methode' : function () { alert(this.chaine); }
};
Merci de vos réponses, bon j'ai essayé de continuer à coder et j'ai obtenu ceci:
mais rien ne s'affiche...

Ou est l'erreur?
// Example Objet en json
var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]} 
 
//fonction de construction de SmartLinks
function TestLink(url_source,title_source,id_source)
{
	this.url_source = url_source; //l'url du document source du SmartLinks
	this.title_source = title_source; // titre du doc source du SmartLinks
	this.id_source = id_source; //l'id de la source du SmartLinks
	this.smartlinks_info = new array; //tableau de liens cible avec info sur la zone, la date etc...
 
 
}
 
var TestLink = eval('(' + TestlinkJson + ')');
 
alert(TestLink);
j'arrive pas afficher la derniere propriété de l'objet JS avec l'instruction alert à la fin du code... c'est koi le PB?

// Example Objet en json
var TestlinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0","date":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]} 
 
//fonction de construction de SmartLinks
// notice we're now using JSON as the init data
function TestLink(json_init)
{
	// init data is used from the init object, e.g. json_init.property
	this.url_source = json_init.url_source; //l'url du document source du SmartLinks
	this.title_source = json_init.title_source; // titre du doc source du SmartLinks
	this.id_source = json_init.id_source; //l'id de la source du SmartLinks
	// notice Array() -- you need to use the proper constructor 
	// to actually create an array
	this.smartlinks_info = new Array(); //tableau de liens cible avec info sur la zone, la date etc...
 
 
}

// note I changed the name of the instance var to avoid confusion
var testLinkInstance = new TestLink(TestlinkJson);
 
// this will alert saying '[Object]' or something similar, 
// since you are attempting to alert with an entire object
alert(testLinkInstance.title_source);
Shinuza a écrit :
Salut

Euh, il faudrait savoir ce qui est potentiellement un tableau, ce qui est une unique, et ce qui peut être une nested hashmap.

hashmap? il y a un seul tableau et le reste est unique
Dans ton code tu crées une propriété smartlinks_info, qui est un nouvel array, et c'est tout.

Si tu veux y mettre du contenu il faudrait une référence à celui de tes données, et j'ai du mal à comprendre pourquoi tu ne fais pas une fonction qui clone ton objet...

Ah oui, et utilise Firebug, il te permet de voir le contenu d'un object/elDom/array, ça sera toujours mieux qu'un alert.
Modifié par Shinuza (01 Aug 2007 - 04:21)
qu'entend tu par cloner!

Voila ou j'en suis dans ma quete de l'affichage de mon objet js!

<script type="text/javascript">
//Muck Up JSON object juste pour voir si notre et notre fonction fonctionne bien!
var SmartLinklinkJson = {"id_source":"7315f47dba65515fca60c851d7065bc6","url_source":"http:\/\/news.yahoo.com\/s\/afp\/20060822\/od_afp\/chinacateringcultureoffbeat_060822074830","title_source":"Jail-theme teahouse becomes prisoner of own success in China - Yahoo! News","smartlinks_infos":[{"id_dest":"75effc69e8c68b389c65c67119463312","score":"126","deleted":"0"," dat e":"1164279208","zone_cible":"151","manually_added":"0","url_dest":"http:\/\/news.yahoo.com\/s\/afp\/20060825\/od_afp\/malaysiahealthtoilets_060825160532","title_dest":"Malaysia calls for \"toilet revolution\" - Yahoo! News"}]};

// La fonction eval crée un objet JS à partir d'un string json qui sera affiché et utilisé pour traitements ultérieurs!
var SmartLink = eval(SmartLinklinkJson); 

//alert(SmartLink.smartlinks_infos[0].id_dest);

// la fonction d'affichage récupere l'objet smartlinks comme élément du DOM
function affichage(){
var afficheur=document.getElementById('Smartlinks'); 

// Création d'un tableau avec toutes les propriétés du SmartLinks
var Props=new Array('id_source', 'url_source', 'title_source', 'smartlinks_infos')

//Création du Tableau en DOM
var tableauSL=document.createElement('table')
var slBody=document.createElement('tbody')

//Boucle qui parcour l'ensemble de l'objet smartlinks afin d'afficher ses propriétés dans le tableau créé
for (i=0;i<Props.length;i++){

//Création d'un élément TR dans le DOM, correspondant à 1 objet SmartLinks
var smartlinksline=document.createElement('tr')

//Boucle de remplissage des deux cellules de la TR créée
for(j=0;j<2;j++){
var cellule=document.createElement('td')
cellule.innerHTML=(j==0)?Props[i]:SmartLink[Props[i]];
smartlinksline.appendChild(cellule)
}
slBody.appendChild(smartlinksline)
}
tableauSL.appendChild(slBody)
document.body.appendChild(tableauSL)
}
</script>
</head>
<body onload="displaySmartLinks()">
<div id_source='1' url_source='2' title_source='3' smartlinks_infos='4' id='Smartlinks'>
Le test smartlink en affichage brut et sans complex!
</div>
</body>

</html>



j'arrive pas à comprendre pourquoi je n'arrive pas à obtenir ceci!

<table>
<tr>
<td>
Title_Source <br />
URL_Source<br />
</td>
<td>
smartlinks_info[0].id_dest <br />
smartlinks_info[0].url_dest</br />
</td>
</tr>
<table>
[/i][/i]
Modifié par olk1free (02 Aug 2007 - 13:40)