11548 sujets

JavaScript, DOM et API Web HTML5

Salut =)

Voila j'aimerai bien que vous m’éclaircissiez quelque chose ^^
Je commence à faire de l'ajax ..... Smiley bawling et donc je récupère la valeur obtenu pour une fonction en ajax .....sauf que cette fonction à plusieurs arguments et que je dois les changer a chaque fois .....
fonction de la forme: Nbr_Data ($type_data, $type_areaOUcountry, $areaOUcountry, $nom_data, $year, $month)

en dessous de la fonction:
$resultat = array();	
	if (isset($_GET["type_data"])){
		if (isset($_GET["type_areaOUcountry"])){
			if (isset($_GET["areaOUcountry"])){
				if (isset($_GET["nom_data"])){
					if (isset($_GET["year"])){
						if (isset($_GET["month"])){
							$type_data = $_GET["type_data"];
							$type_areaOUcountry = $_GET["type_areaOUcountry"];
							$areaOUcountry = $_GET["areaOUcountry"];
							$nom_data = $_GET["nom_data"];
							$year = $_GET["year"];
							$month = $_GET["month"];						
							$resultat['ladata'] = Nbr_Data ($type_data, $type_areaOUcountry, $areaOUcountry, $nom_data, $year, $month);							
						}
					}
				}
			}
		}	
	}
print json_encode($resultat);



Cela veut il dire que si je veux par exemple un type de donnée pour la france pour chaque mois ... puis pour un autre pays puis pour une autre année puis pour une autre donnée..... etc etc

je dois faire un nombre incalculable d'appels ? de ce type la ? :


	$(document).ready(function() {
		$.ajax({
		  url: 'data.php',
		  dataType : "json",
		  data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: 'postsales', year: 2011, month: 'all'},
		  success: function(json) { 	
			$('#postsales2011world').html(json['ladata']);
		  }
		});
		});
		
		$(document).ready(function() {
		$.ajax({
		  url: 'data.php',
		  dataType : "json",
		  data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: 'presales', year: 2011, month: 'all'},
		  success: function(json) { 
			$('#presales2011world').html(json['ladata']);
		  }
		});
		});
		
		$(document).ready(function() {
		$.ajax({
		  url: 'data.php',
		  dataType : "json",
		  data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: 'sales', year: 2011, month: 'all'},
		  success: function(json) { 
			$('#sales2011world').html(json['ladata']);
		  }
		});
		});
		


En gros faire un bloc comme les trois au dessus a chaque fois que je veux faire appel a la fonction mais avec d autres données ? ......

J'espere que c'est assez clair, je trouve ca difficile à expliquer .... =)
Bonjour,

Tout d'abord, tu ne dois pas avoir plusieurs fois la fonction :
$(document).ready(function() { ... })
Il faudra faire tous tes appels dans cette fonction.

Ensuite, tu peux très bien automatiser ton processus avec une boucle et un tableau...
var containers = ['#postsales2011world', '#presales2011world', '#sales2011world']
for (var i in containers)
    $.ajax({
        url: 'data.php',
        dataType : "json",
        data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: 'postsales', year: 2011, month: 'all'},
        success: function(json) { 	
            $(containers[ i]).html(json['ladata']);
        }
    });
(J'ai dû mettre un espace dans [ i], sinon le site l'interprète comme du BBCode
Modifié par Gothor (16 Feb 2012 - 11:06)
Merci pour ta réponse rapide mais ca ne répond pas vraiment à ma question, comme tu as pu le voir le "data" change donc comment je fais pour changer le data sans pour autant ne pas rappeler la fonction je dois faire un truc de ce type ? :


$(document).ready(function() { ... })
var containers = ['#postsales2011world', '#presales2011world', '#sales2011world']
for (var i in containers)
    $.ajax({
        url: 'data.php',
        dataType : "json",
        data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: 'postsales', year: 2011, month: 'all'},
        success: function(json) { 	
            $(containers[ i]).html(json['ladata']);
        }
   data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: '[#red]presales[/#]', year: 2011, month: 'all'},
        success: function(json) { 	
            $(containers[ i]).html(json['ladata']);
        }
   data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: '[#red]sales[/#]', year: 2011, month: 'all'},
        success: function(json) { 	
            $(containers[ i]).html(json['ladata']);
        }
    });


De plus j'ai pensé pour le mois vu que en fait pour la variable mois c'est genre: 1,2,3,4 ... je pourrais mettre une boucle for ?
Mais heu ca ferai genre ca alors ?

$(document).ready(function() { ... })
var mois = [1,2,3,4,5,6,7,8,9,10,11,12]
for (var i in mois)
    $.ajax({
        url: 'data.php',
        dataType : "json",
        data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: 'postsales', year: 2011, month: [#red]i[/#]},
        success: function(json) { 	
            $(containers[ i]).html(json['ladata']);
        }
});


Je ne pense pas dois y avoir un truc plus simple mais bon je nage pas mal j avoue Smiley decu
Modérateur
Bonjour, pas mal d'approximation, mais ce que tu souhaites effectuer, c'est envoyer des variables. tout ça peut se faire en un seul appel:

myCountry = 'France';

...

data:{
  type_data: 'Job',
  type_areaOUcountry: myCountry,
  areaOUcountry: 'world',
  nom_data: 'presales',
  year: $('select#year').val(),
  month: 'all'
},

ici lors de l'appel il envoie la valeur d'une variable myCountry comme pays, et la valeur de la liste déroulante possédant un id 'year' comme année. (exemples)

Sinon pas besoin d'implémenter '$(document).ready(function() {' 10 fois à la suite dans le même fichier, une seule fois qui contient tout suffit.

Pour le php, isset accepte n paramètres et ne retournera true que si ils sont tous initialisés:

if (isset($_GET["type_data"], 
    $_GET["type_areaOUcountry"],
    $_GET["month"]),
    ... ) {
        $type_data = $_GET["type_data"];
        ...
}

en remplaçant les ... par la suite logique, ce sera bien plus lisible

pour terminer, essaie d'être plus strict sur tes noms de variables, il y a du camelCase, des underscore, de l'anglais et du français tout cela dans un joyeux mélange. Je t'invite à t'intéresser aux conventions de nommage pour éviter de t'y perdre
Modifié par kustolovic (16 Feb 2012 - 11:35)
Merci pour ta réponse mais je comprend toujours pas en quoi ca répond à ma question ....

Ce que je souhaites c'est par exemple appeler la fonction avec la valeur pour le pays: France puis Germany puis USA, par exemple .....

La avec ton exemple c'est juste que je met myCountry = 'France';
et apres:
type_areaOUcountry: 'Learner_Country',
areaOUcountry: myCountry,

Mais c'est vrai que c'est plus clair .... mais je fais toujours l'appel que pour la france ....

Je n'ai pas non plus compris pour year


Et j'ai posé un autre probleme:
"De plus j'ai pensé pour le mois vu que en fait pour la variable mois c'est genre: 1,2,3,4 ... je pourrais mettre une boucle for ?
Mais heu ca ferai genre ca alors ?

$(document).ready(function() { ... })
var mois = [1,2,3,4,5,6,7,8,9,10,11,12]
for (var i in mois)
    $.ajax({
        url: 'data.php',
        dataType : "json",
        data:{type_data: 'Job',type_areaOUcountry: 'Learner_Country', areaOUcountry: 'world', nom_data: 'postsales', year: 2011, month: i},
        success: function(json) { 	
            $(containers[ i]).html(json['ladata']);
        }
});

"