11486 sujets

JavaScript, DOM et API Web HTML5

Pages :
(reprise du message précédent)

Regarde déjà a quoi ressemble ce que tu récupères, avec les objets, vaut mieux être sur de ce qu'on a à récupérer au lieu de retaper tout le code après en se rendant compte qu'on récupère pas ce qu'on veut.
non mais si tu veux ma fonction ajax call je l utilise deja pas mal ^^

screenshot:
http://gyazo.com/3b7aa323a8888a9dec5d9439f71f7a04

toutes les valeurs que tu vois la, je les récupère avec la fonction et je les envoie direct en html avec ca:
('#id' + nom + 'data').html(json['ladata']);

donc voila normalement ca marche quoi ....

Donc voila la donnée est dans le tableau json['ladata'], je cherche juste a savoir comment maintenant je fais pour la prendre .....
N empeche juste pour prendre une valeur c'est compliqué ... c ouf la programmation web quand meme -.-
donc voila en fait c'est plutot json['ladata'] que je dois renvoyer, mais ca me dit pas comment, j avoue maintenant quand je fais un alert ca me met des valeur alert (json['ladata'])

Mais comment je fais .....

J'ai essayé:

function certif_level (certiflevel) {			
	var url;							
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=" + certiflevel + "&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;
	ajax_call (url, function(json){		
	value = json['ladata'];	
	alert (json['ladata']);
	});				 
	return value;	
}	


ca marche pas


function certif_level (certiflevel) {			
	var url;							
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=" + certiflevel + "&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;
	value = ajax_call (url, function(json){			
	alert (json['ladata']);
	return json['ladata']
	});				 
	return value;	
}	



non plus ......
un truc du genre ?


url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acfe&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acfe=json['ladata']});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acps&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acps=json['ladata']});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acpsi&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acpsi=json['ladata']});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acse&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acse=json['ladata']});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acsei&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;
	ajax_call (url, function(json){data_acsei=json['ladata']});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acsr&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acsr=json['ladata']});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=aqps&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_aqps=json['ladata']});
Un truc de ce genre plutôt :
var tab_certif = ["acfe", "acps", "acpsi", "acse", "acsei", "acsr", "aqps"]
var return_data = array();

for(var j=0;j<tab_certif.length;j++){
    url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data="+tab_certif[j]+"&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data[j]=json['ladata']});
}

Et après, il y a plus qu'à traiter le tableau que tu viens de remplir.
c'est vrai que c'est plus joli ^^

mais ca revient au meme que ce que j'avais meme si c'est mieux mais le truc c'est qu'il reconnaissait pas

series: [{
						type: 'pie',
						name: 'Certification',
						data: [
							['ACFE',data_acfe],
							['ACPS',data_acps],
							['ACPSi',data_acpsi],
							['ACSE',data_acse],
							['ACSEi',data_acsei],
							['ACSR',data_acsr],
							['AQPS', data_aqps]
						]
					}]



alors que c'est censé etre une variable globale non ?
donc avec ce que tu m as passé ca serait: data[0], data[1] .....


je tiens à préciser que ce bout de code est dans une autre fonction .... encore .... ^^ c'est ma fonction qui gère le fait que s'il y a un changement de country ou de year et bah ca change direct les données


$(function(){
	//l'appel de cette fonction doit être fait ici (Dans le ready) pour le départ
		select_country ("world",false);			
	});
	//Les autres appels de cette fonction se font a travers le html	
	function select_change() {
			select_country (save_country,false)
	}

//Déclaration de la fonction select_country
	function select_country (thecountry,clspross) {
		//La mise en place de la class selected_country pour distingué le pays choisi
		//L'argument clspross : faire dictinction entre les appels sur le clique et les appels directs de la fonction.
		if(typeof(clspross)=='undefined'){		
			$('.selected_country').removeClass('selected_country');
			$(this).addClass('selected_country');
		}		
		save_country = thecountry;		

		selected_year=$('#select_year').val();	
		
		var url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=presales&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=sales&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=trainer&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=internal&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=external&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certif exam&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=course&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=webinar&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=specific certification&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certification&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=laboratory&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="nom_duration=classroom&year=" + selected_year + "&month=all&country=";
		ajax_call (url + thecountry, function(json){});

		url="nom_duration=elearning&year=" + selected_year + "&month=all&country=";
		ajax_call (url + thecountry, function(json){});
		
		
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acfe&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acfe=json['ladata'];});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acps&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acps=json['ladata'];});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acpsi&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acpsi=json['ladata'];});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acse&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acse=json['ladata'];});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acsei&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;
	ajax_call (url, function(json){data_acsei=json['ladata'];});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=acsr&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_acsr=json['ladata'];});
	
	url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data=aqps&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
	ajax_call (url, function(json){data_aqps=json['ladata'];});
		
	}
le truc c'est que dans l'exemple que tu m as passé tu utilises pas return_data, non ?

genre t as fait:

var return_data = array();

mais tu t en sers pas .... Smiley decu

et pis si je le décare c'est en global alors en fait ? donc en gros je le déclare pas variment enfin je met pas de "var", c ca ? vu que je dois l'utiliser dans une autre fonction ensuite ?


Désolé de t mbeté avec ca, mais c'est vrai que j'aimerai bien comprendre pour avancer ^^
je vrais craquer XD

ca marche pas rhaaaaa


function select_country (thecountry,clspross) {
		//La mise en place de la class selected_country pour distingué le pays choisi
		//L'argument clspross : faire dictinction entre les appels sur le clique et les appels directs de la fonction.
		if(typeof(clspross)=='undefined'){		
			$('.selected_country').removeClass('selected_country');
			$(this).addClass('selected_country');
		}		
		save_country = thecountry;		

		selected_year=$('#select_year').val();	
		
		var url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=presales&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=sales&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=trainer&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});
		
		url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=internal&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Int_Ext&type_areaOUcountry=Learner_Country&nom_data=external&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certif exam&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=course&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=webinar&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=specific certification&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=certification&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="type_data=Type&type_areaOUcountry=Learner_Country&nom_data=laboratory&year=" + selected_year + "&month=all&areaOUcountry=";
		ajax_call (url + thecountry, function(json){});

		url="nom_duration=classroom&year=" + selected_year + "&month=all&country=";
		ajax_call (url + thecountry, function(json){});

		url="nom_duration=elearning&year=" + selected_year + "&month=all&country=";
		ajax_call (url + thecountry, function(json){});		

		
		var tab_certif = ["acfe", "acps", "acpsi", "acse", "acsei", "acsr", "aqps"];
		
		var return_data = array();
		alert("coucou");
		for(var j=0;j<tab_certif.length;j++){
			url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data="+tab_certif[j]+"&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
			ajax_call (url, function(json){return_data[j]=json['ladata'];});
			alert (url);
			alert (return_data[j]);
		}
		
	}


il arrive meme pas a afficher le "coucou", en fait j'ai l impression qu il comprend pas:
var return_data = array();


Smiley bawling
Smiley bawling Smiley bawling Smiley bawling Smiley bawling Smiley bawling Smiley bawling Smiley bawling Smiley bawling Smiley bawling Smiley bawling
ha ok en fait ca marche plus .....

en fait ca marchait grace a mes alertes qui "ralentissaient" le programme, maintenant apparemment ca marche plus depuis que j ai envlevé les alertes, j en déduit que le graphe s affiche avant que les valeurs aient été calculé ..... fausse joie ... (désolé pour toi les messages a la suite mais apapremment on peut plus editer sur ce forum ? ... oO)

En fait il faudrait que je dise d'afficher le graph apres avoir calculer les valeurs, donc si ca aurait été une fonction j'aurai compris mais la :

var chart;
			$(document).ready(function() {
				chart = new Highcharts.Chart({


comprend pas trop ce que c'est ^^ jsais juste que le ready function fait que ca se lance direct .....

Donc ca marche plus .... mais c juste un probleme d'asynchronicité (magnifique ce mot :O)


une idée, ON PEUT LE FAIRE ! ON VAINCRA MDR
bah le truc c'est que apres ca va pour le graph, tu sais, le code que j'ai deja passé donc:

var chart;
			$(document).ready(function() {
				chart = new Highcharts.Chart({
					chart: {
						renderTo: 'pie_certification',
						plotBackgroundColor: null,
						plotBorderWidth: null,
						plotShadow: false
					},
					title: {
						text: 'Type of Certification Level',
					},
					subtitle: {
						text: '....',
					},
					tooltip: {
						formatter: function() {
							return '<b>'+ this.point.name +'</b>: '+ this.y;
						}
					},
					plotOptions: {
						pie: {
							allowPointSelect: true,
							cursor: 'pointer',
							dataLabels: {
								enabled: false
							},
							showInLegend: true
						}
					},
				    series: [{
						type: 'pie',
						name: 'Certification',
						data: [
							['ACFE',return_data[0]],
							['ACPS',return_data[1]],
							['ACPSi',return_data[2]],
							['ACSE',return_data[3]],
							['ACSEi',return_data[4]],
							['ACSR',return_data[5]],
							['AQPS', return_data[6]]
						]
					}]
				});
			});


sauf que y a un soucis d'asynchronicité parce que en fait quand il arrive la il comprend pas les return_data, parce qu'ils sont pas encore calculés ....

vu que quand y avait les "alert" ca marchait ... mais des que je les ai enlevé ca marche plus .. donc je me dis que les alert faisait en sorte de ralentir le programme ou jsais pas ..... mais j'ai juste enlevé les alert et ca marche pu quoi ....

Donc je pense que quand il essaye d afficher le graph il y arrive pas parce que les valeur de return_data n existe pas encore ... mais je peux me tromper
Non, c'est probablement ca.

Mais si tu mets le code que je t'ai donné sans les alert avant la déclaration de ton chart, ca ne fonctionne pas ?
exactement ce que j'ai dit oui, mais c trop trop trop trop trop trop trop trop chelou genre, j ai ca:

var tab_certif = ["acfe", "acps", "acpsi", "acse", "acsei", "acsr", "aqps"];
		
		return_data = new Array();
		for(var j=0;j<tab_certif.length;j++){
			url= "type_data=Certification_Level&type_areaOUcountry=Learner_Country&nom_data="+tab_certif[j]+"&year=" + selected_year + "&month=all&areaOUcountry=" + save_country;		
			ajax_call (url, function(json){return_data[j]=json['ladata'];});
			alert (url);
			alert (return_data[j]);
		}


ca m affiche bien l url et des valeurs pour le return_data
j'enleve juste alert(url), et la au lieu de m indiquer des valeurs pour le return_data, ca m affiche undefinited ............ WHA DA FUQ

quand y a un alert je crois avoir remarquer que ca refresh la page, ...... faut il donc refres la page a chaque fois ? enfin sérieux pour moi c incompréhensible quoi, un alert ca joue en rien normalement ......
il y a ceci:

function ajax_call(what2do, callback){
		$.ajax({
			type: "GET",
			dataType: "json",
			url: "data.php?" + what2do,
			success: function(json) {
				var nom = json['nom'];
				nom = nom.replace(" ","_");
				if (nom == "classroom" || nom == "elearning"){
					callback.call(this, json);
					$('#id' + nom + 'data').html(json['duration']+ " days");
				}
				else {
					callback.call(this, json);
					$('#id' + nom + 'data').html(json['ladata']);				
				}
			}
		});	
	};
De base une requête Ajax est asynchrone, ca veut dire que la suite du chargement de la page et de tous les scripts s'exécute en parallèle au script Ajax sans en tenir compte, alors que la ligne que je t'ai donné fait en sorte que ta requête Ajax devienne synchrone et que donc la suite du script attend le résultat de ta requête Ajax.

Et d'où je le sais ? Doc Jquery.
Pages :