11548 sujets

JavaScript, DOM et API Web HTML5

Salut!
Voila j'ai un soucis ......

Pour commencer je voudrais en fait afficher des valeurs pour "le monde" puis si je clique sur france qu'elle change automatiquement (ajax) et qu'elles affichent les données pour la france ...

Pour ca j'ai voulu faire ca:

what2do="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=postsales&year=2011&month=all";
	ajax_call(what2do); 

	function ajax_call(what2do){
		$.ajax({
			type: "POST",
			dataType: "json" ,
			url: "data.php",
			data: what2do,
			success: function(json) { 	
			$('#postsales2011world').html(json['ladata']);
			}			
		}); 
	};	
	$("#monid").click(function(e) {
		e.preventDefault();
		thecountry = $(this).attr(‘json’); 
		alert(“Alert the country is =”+ thecountry);       
		what2do=”country=”+ thecountry; 
		ajax_call(what2do); 
		return false; 
	}); 
	};


<b href=’’ id=’monid’ data=’france’>France</b>


$resultat = array();	
	if (isset($_GET["type_data"],
		$_GET["type_areaOUcountry"],
		$_GET["areaOUcountry"],
		$_GET["nom_data"],
		$_GET["year"],
		$_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);



(Ma fonction Nbr_Data, je ne la met pas parce que bon je pense que ca va deja etre assez long comme ca ^^, par contre elle fonctionne j'en suis sur)

La programmation Web, c'est nouveau pour moi ... donc si vous pouviez vraiment expliquer ca serait super sympa, voir me donner des conseils ? (pour le code que je vous ai donné, y a des bouts de codes donnés par qqun a mon entreprise (je suis en alternance) et voila .... ^^)

PS: pour le moment "france" dans la page web, je peux pas cliquer dessus ....


Merci d'avance pour votre aide Smiley biggrin
Modifié par InfoGeo (22 Feb 2012 - 09:53)
Si je me suis mal exprimé ou quoi .... posez moi des questions mais aidez moi svp ....
Modifié par InfoGeo (23 Feb 2012 - 09:48)
°
InfoGeo a écrit :

PS: pour le moment 'france' dans la page web, je peux pas cliquer dessus ....


C'est parce que ta balise

<b href=’’ id=’monid’ data=’france’>France</b>


ne fonctionne pas, <b> est utilisée pour mettre du texte en gras.
Utilises plutôt <a> déjà :

<a href=’#’ id=’monid’ data=’france’>France</a>

------------------------------------------------------------------------------
*************************************************************
------------------------------------------------------------------------------
°
	$("#monid").click(function(e) {

		e.preventDefault();

		thecountry = $(this).attr(‘json’); // [b]Où est ce que l'attribut "json" existe dans ta balise ?[/b]

		alert(“Alert the country is =”+ thecountry);       

		what2do=”country=”+ thecountry; 

		ajax_call(what2do); 

		return false; 


Ce serait plutôt :

	$("#monid").click(function(e) {

		e.preventDefault();

		thecountry = $(this).[b]val()[/b]; // Récupère la valeur du lien, ici 'France' 

		alert(“Alert the country is =”+ thecountry);       

		what2do=”country=”+ thecountry; 

		ajax_call(what2do); 

		return false; 


------------------------------------------------------------------------------
*************************************************************
------------------------------------------------------------------------------

Ensuite, dans ton appel ajax, tu spécifies que la méthode utilisée est POST :

type: "POST",


Alors pourquoi récupères tu tes données dans data.php avec la méthode $_GET ?

$_GET["type_data"]


Il faut que tu les récupères avec la méthode $_POST, comme ceci :

$_POST["type_data"]



------------------------------------------------------------------------------
*************************************************************
------------------------------------------------------------------------------

Enfin, tu récupères ici plein de paramètres :
$_GET["type_areaOUcountry"],

		$_GET["areaOUcountry"],

		$_GET["nom_data"],

		$_GET["year"],

		$_GET["month"] ...


Sauf le paramètre que tu passes à l'ajax dans ton deuxième appel

what2do=”country=”+ thecountry; 




En espérant t'avoir aidé Smiley smile
Modifié par Seyu (24 Feb 2012 - 11:16)
Merci pour ta réponse, j'avais pas vu que y avais une réponse (normalement j avais demandé un mail ... Smiley decu )

Pour le "a" au lieu du "b", merci ^^

Donc tous les GET je les ai replacé par ds POST et pis ici en fait c pas : what2do=”country=”+ thecountry;
mais:
what2do="type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=2011&month=all&areaOUcountry=" + thecountry;
non ? parce que c juste la valeur du pays donc areaOUcountry que je veux changer ?

En tout cas avant ca affichait rien et maintenant ca affiche bien la valeur pour le monde, donc ca c'est ok, par contre quand je clique sur France, il ne se passe rien Smiley bawling

Mais déjà merci pour ça ...
maintenant si on pouvais me dire ce qui ne va pas avec la fonction : $("#monid").click(function(e)

Ca serait vraiment cool =)
Salut

Alors:
<a href="" id="monid" data="france">France</b>


Et après (On suppose que ta fonction Nbr_Data te retourne une valeur):

$resultat = array();	
if (isset($_GET["type_data"],$_GET["type_areaOUcountry"],$_GET["areaOUcountry"],$_GET["nom_data"],$_GET["year"],$_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);


Pour le JS:
$("#monid").click(function(e) {
	var what2do='';
	thecountry = $(this).attr('[b]data[/b]'); //C'est ce que tu essayais de faire au début je crois
	alert('Alert the country is ='+ thecountry);       
	what2do='type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=2011&month=all&areaOUcountry=' + thecountry; 
	ajax_call(what2do); 
	return false; 
}); 


function ajax_call(what2do){
	$.ajax({
		type: 'GET',
		dataType: 'json' ,
		url: "data.php?"+what2do,
		success: function(json) { 	
			$('#postsales2011world').html(json['ladata']);
		}			
	}); 
};


J'ai changer le type d’envois de la requête Ajax pour le faire en GET, dans ce cas tu n'auras pas besoin de mettre ton attribut data pour la fonction ajax, et tu auras seulement à faire recours à url comme tu vois en haut, et sur ton serveur tu garderas le traitement en GET. Le résultat sera affiché normalement à l'intérieur de l'élément html qui possède l'id="postsales2011world".

Si ça ne marche pas vérifie que tu as mets le bon chemin pour url, si oui vérifie que tu reçois une réponse côté serveur (à l'aide de ton firebug 'console'), si tu reçois pas de réponse ou que tu reçois une réponse avec une déclaration d'erreur côté serveur, revois alors ton code php.

Bon courage Smiley smile
Modifié par unami (23 Mar 2012 - 19:21)
Merci de ta réponse

Malheureusement, avant en fait j'arrivais à afficher la valeur pour le monde, mais en cliquant sur "france" et bah ca changeai pas la valeur pour ce pays

Maintenant ca n affiche carrément plus rien, que je clique sur france ou non .....
ha autant pour moi, je récupère bien la valeur du monde encore (j avai oublié le point d interrogation pour l url), mais en appuyant sur france ul ne se passe rien
en fait il ne rentre meme pas dans la fonction au moment du click il ne rentre meme pas dans
$("#monid").click(function(e) {

Et je sais pas pourquoi ........ personne aurait une idée ? parce que je suis totalement bloqué personne peut m aider a mon entreprise et ca c juste pour comprendre apres j ai beaucoup de chose a faire ..........
Où est inséré ton script ?
Est-il après la déclaration de ton élément d'id "monid" ? Dans un bloc "ready" ? Aucun de tout ça ?
si tu parles de ma fonction en javascript

$("#monid").click(function(e) {

et

function ajax_call(what2do){


C'est dans le "head"
et:

<div id="DIV_MOVE">
<div id="D_MOVE_TITRE"> Selection </div>
<a href="#" id="monid" data="france">France</a><br/><br/>
<a href="#" id="monid" data="germany">Germany</a><br/><br/>
<a href="#" id="monid" data="usa">USA</a><br/>
</div>



est dans le body
Que se passe-t-il quand tu places ton $("#monid").click() à la fin du body ? =°
Et dans un bloc
$(document).ready(function () {
});
?
CA MARCHEEEEEEEEEEEEEEEEEEEEEEE


merci a toi dieu Gothor

J'aurai surement d autres questions ^^ mais au moins maitnenant je peux essayer de faire quelque chose ......


Voila mon projet est d afficher des valeurs pour le monde puis en cliquant sur france ca va changer les valeurs affichées et mettre celles pour la france

Voila un screenshot .....
http://gyazo.com/2f5a476fa8c4399df384b4fc4d63a8f5

Pour l'instant comme tu le vois, il y a qu une valeur mais mon but est de tous les remplir puis de tous les changer d'un coup en cliquant sur france ou germany ou .....


Pour le moment je sais pas trop comment faire hummmm .....

La j ai ces deux fonctions:

postsales="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=postsales&year=2011&month=all";		
	ajax_call(postsales); 	

	function ajax_call(what2do){
		$.ajax({
			type: "GET",
			dataType: "json",
			url: "data.php?" + what2do,
			success: function(json) {
			$('#postsales2011world').html(json['ladata']);
			}
		});
	};
	



<script type="text/javascript">
	$(document).ready(function () {
	$("#monid").click(function(e) {
		e.preventDefault();		
		thecountry = $(this).attr('data');
		click_what2do='type_data=Job&type_areaOUcountry=Learner_Country&nom_data=postsales&year=2011&month=all&areaOUcountry=' + thecountry; 
		ajax_call(click_what2do);
		//alert('Alert the country ' + thecountry);
		return false;  
		}); 
	});	
</script>


La il faudrait que je fasse une fonction par type de données d apres toi ? :O

je pense que :

$('#postsales2011world').html(json['ladata']);

N'est pas la bonne solution pour afficher ce qu on veut parce que en plus a cause de ca je peux l afficher qu a un seul endroit et j aurai besoin de plus d endroits ....


Mais je pense pas que je dois faire ca non plus quoi ......

	postsales="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=postsales&year=2011&month=all";
	presales="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=presales&year=2011&month=all";
	sales="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=sales&year=2011&month=all";
	trainer="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=trainer&year=2011&month=all";
	certif_exam="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=certif exam&year=2011&month=all";
	course="type_data=Job&type_areaOUcountry=Learner_Country&areaOUcountry=world&nom_data=course&year=2011&month=all";
.
.
.
	
	ajax_call(postsales); 
	ajax_call2(presales); 
	ajax_call3(sales); 
	ajax_call4(certif_exam); 
	ajax_call5(certif_exam); 
	ajax_call6(course); 
.
.
.




De plus ! :


Je viens de remarquer un probleme ........

Le changement de valeur marche que pour le premier pays dans la liste, la je clique sur france ca marche, mais sur les autres ca marche pas .... si je met germany tout en haut ca marche mais apres ca marchera plus pour france etc .......... oO

	
<div id="DIV_MOVE">
		<div id="D_MOVE_TITRE"> Selection </div>
		<a href="#" id="monid" data="france">France</a><br/><br/>
		<a href="#" id="monid" data="germany">Germany</a><br/><br/>
		<a href="#" id="monid" data="usa">USA</a><br/>
	</div>





Désolé pour toutes ces questions j espere que tu auras un petit de temps pour répondre à ce message, en espérant que tu puisses m'aider

Mais déja je te remercie encore beaucoup pour m avoir permis de faire mon premier changement en ajax ! ^^


- Geoffrey