C ' AJAX

Fermé
maïwene Messages postés 26 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 1 février 2008 - 28 janv. 2008 à 18:18
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 12 mars 2008 à 22:56
Bonjour,

je voudrais savoir la ou les grandes différences entre Ajax et Java? lequel est le plus simple (lorsqu'on débute)?
en ce moment, j'étais sur XHTML et CSS (c'est pas du la m chose!) , et je voulais voir les bases du C ou C++; mais quelqu'un a dit qu'il valais mieux utiliser Ajax. Est-ce que c'est vrai? parce que j'entends parler que du C et C++ ou encore du Java. Il dit qu'il y a plus d'avantages...mais ça a l'air vachement plus compliqué!!!

Merci D'avance!

9 réponses

ben1852 Messages postés 35 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008
28 janv. 2008 à 18:26
le langage C est un langage indipensable pour programmer! il te donne un aspect de la programation en general!
si tu utilise java tu feras du C car ces deux langages ont la mm syntaxe!
JAVA est un langage orienté objet tout comme C++! Ces deux langages sont tres presents dans les entreprises et permettent de realiser de grandes choses! ex:sur les portables les jeux sont programmer pour la plupart en java
0
maïwene Messages postés 26 Date d'inscription mercredi 21 novembre 2007 Statut Membre Dernière intervention 1 février 2008
30 janv. 2008 à 12:27
Ah: ok! je comprends! MERCI!
et pour Ajax c'est la m chose que Java?
0
ben1852 Messages postés 35 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 30 janvier 2008
30 janv. 2008 à 22:18
ajax je ne connais pas!
si tu commence a programmer tte facon commence par le langage C.
Pour les debutant tu as VBA. C'est un langage que tu trouves sous excel. Langage qui te permet d'acquerir de bonne notion de base pour la programtion.
Le langage C se complique assez rapidement c pour cela qu'il te faut aborder quelques petites notions ms bon si tu es motivé attaque le langage C.
0
up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008
11 mars 2008 à 11:11
salut, je cherche des liens pour commencer ma autoFormation sur AJAX
en fait, je cherche des cours simplifiés car je n'ai aucune idée
merci d'avance :)
0
Salut,

Il y à des tutoriels AJAX ici : https://ajax.developpez.com/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008
11 mars 2008 à 13:18
ah j'ai oublié, sur quel environnement je dois travailler
thnx
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 mars 2008 à 13:58
Salut,

AJAX c'est une fonctionnalité de Javascript,, c'est à dire qu'il s'éxécute coté client, qui permet d'appeler le serveur en "arrière plan" et de modifer ainsi l'affichage d'une page HTML sans recharger la page.
0
Utilisateur anonyme
11 mars 2008 à 14:04
Attention:

- Java et C sont des languages de programmation.

- Ajax est une sorte de protocole d'échange de données entre le client et le serveur. Du côté du client il y a du JavaScript qui utilise des objet XMLHttpRequest pour les requêtes, et du côté du serveur, il y a ce que tu veux (pourvu qu'il y ait des librairies XML pour répondre aux requêtes du client).

Ajax est par exemple très utilisé en ce moment par les sites web sur lesquels tu peux lire ton courrier électronique car cette technologie permet de lire le courrier sur le serveur sans recharger la page en entier.

Plus d'infos sur Wikipedia
0
up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008
11 mars 2008 à 14:58
merci pour les informations
je veux savoir en plus comment procéder pour développer une applications en AJAX (coté pratique: l'environnement, frameworks, des outils...)
je vous remercie infiniment pour votre patience
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
11 mars 2008 à 18:36
Attention AJAX n'est pas en soi un langage de programmation, c'est un outil, un complément au Javascript.
0
up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
11 mars 2008 à 21:40
bon je comprend ça
mais côté pratique je suis vraiment perdue
merci dans tous les cas
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008
12 mars 2008 à 10:16
Pour choisr le language que tu vas utiliser:

- analyse le besoin en fonction du cahier des charges de ton projet. Besoin en puissance de calcul, en graphisme etc...

- est ce une appli qui serra utilisée via intranet ou internet ?

- cette appli serra hébergée sur un PC ou sur une machine distante chez un hebergeur par exemple ou un serveur intranet.

En fonction de ces critères (la liste n'est aps exaustive) tu t'orientes vers un langage.
0
up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008
12 mars 2008 à 12:21
ok je vois, merci Alain.
Mon encadreur m'a demandé de maitriser l'AJAX pour faire une interface
mais je suis novice, même les tutoriels ne m'ont pas donner un coup de démarrage
je connais un peu le java script, mais qu'est ce que je dois télécharger en plus?
comment travailler avec le HttpRequest ? c'est un langage, outil ou quoi?
désolé si mes questions sont aussi banal
merci beaucoup
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 mars 2008 à 13:32
Ha d'accord c'est plus clair.

Donc tu as une page en HTML avec du javascript dedans.

Le principe:

Dans ta page html, sur un évenement, par exemple un click sur un bouton, un changement dans une liste, cela déclenche un appel de fonction javascript.

HttpRequest est une fonction particulière Javascript qui permet d'appeler le serveur en asynchrone (en arrière plan, l'utilisateur ne s'en rend pas compte)
Il y a des tutos et des scripts tout faits qui parametrent cette httRequest pour q"'elle fonctionne avec tous les navigateurs ( he oui tout n'est pas homogène dans le monde de l'internet)

Bref cette requette appelle un script sur le serveur distant (chez ton hebergeur), si tu est sur un serveur
qui accepte le PHP ce sera un script PHP. Et passes à ce script des parametres (datas)

Ce script éxécute une tache, par exemple lire des enregistrements précis en fonction des ces datas.
Il répond en envoyant les résultats (sous forme de texte ou xml)

La requette HttRequest traite la réponse et va écrire "écrire" ça dans lapage à l'endroit ou tu veux.

Il faut que tu fasses:

- dans <head> </head> de ta page HTMLl tu mets le script javascript fonction makeHttRequest()
et fonction traitement de la réponse
- dans la partie <body> de ta page html tu mets l'objet (bouton ....) qui va déclencher l'évenement et l'appel de la fonction par ex: onClick=" makeHttRequest;"
- à l'endroit ou tu veux la réponse tu mets un <div id="id_ecrire"></div>
- tu fais un script php qui sera appelé par Ajax

Un exemple de code: 3 fichiers: gardes bien les mêmes noms !

Page HTML (avec fonctions Ajax inclues): listes_liees.php
<html>
<head>
<!--  Script de listes deroulantes liees  avec appel  par AJAX, (evite le rechargement de la page) -->
<script language="Javascript"type="text/JavaScript">
// Requette AJAX
function makeRequest(url,id_niveau,id_ecrire){
	var http_request = false;
		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
        http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
		// lancement de la requete
		http_request.open('POST', url, true);
		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		obj=document.getElementById(id_niveau);
		data="val_sel="+obj.value;
        http_request.send(data);
}

function traitementReponse(http_request,id_ecrire) {
	var affich="";
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
					// cas avec reponse de PHP en mode texte:
			//chargement des elements reçus dans la liste
			var affich_list=http_request.responseText;
				obj = document.getElementById(id_ecrire); 
                obj.innerHTML = affich_list;
		} 
		else {
                alert('Un problème est survenu avec la requête.');
        }
    }
}
</script>
</head>
<?php
include ("config.php");
// Connexion a la base de donnees  
	$AccesBase = mysql_connect($host,$Login,$Pass);
	mysql_select_db($DB,$AccesBase);
	$QuestionBase = "SELECT DISTINCT $champ_niv FROM $Table  ORDER BY $champ_niv ASC " ;
	$result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error());
	$nombre_enr=mysql_num_rows($result_recherche);
?>
<body>
<form name="test1" method="post" action="liste_liees.php"  >
	<div id="id_list1">Niveau:<br>
		<select name="niv1" id="id_niv1" onChange="makeRequest('rep_PhpAjax.php','id_niv1','id_list2')">
			<option>-- Choisissez --</option>
<?php
			while ($row=mysql_fetch_assoc($result_recherche)){
?>
					<option value="<?php echo $row[$champ_niv]?>"><?php echo $row[$champ_niv]?></option> 
<?php
			}
?>
		</select> 
		<br><br>
	</div>
	
	
	<div id="id_list2">
	<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
	</div>
</form>
</body>
</html>

le script php appelé par Ajax: rep_PhpAjax.php

<code>
<?php
// script PHP interrogation Base de donnees pour reponse a la requette AJAX
include ("config.php");

// Connexion a la base de donnees  
	$AccesBase = mysql_connect($host,$Login,$Pass);
	mysql_select_db($DB,$AccesBase);
	$QuestionBase = "SELECT * FROM $Table  WHERE ".$champ_niv."='".$_POST[val_sel]."' ORDER BY ".$champ_etud." ASC " ;
	$result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error());
// construction de la liste deroulante
$aff=="";
$aff=$aff."Etudiants:<br>
		<select name='niv1' id='cont_list2' >
		<option>-- Choisissez --</option>";
		while ($row=mysql_fetch_assoc($result_recherche)){
			$aff.="<option value=\"$row[$champ_etud]\">$row[$champ_etud]</option>"; 
		}
	$aff=$aff."</select><br><br>";
// envoi reponse Php a Ajax	
	echo $aff;
?>


et enfin le fichier de configuration pour connexion à la base de données: config.php

<code><?php
$host="localhost";
$Login="root";
$Pass="allaurejul";
$DB="test";
$Table="etudiants";
$champ_niv="niveau";
$champ_etud="etudiants";
?>



</code>
</code>
0
up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008
12 mars 2008 à 16:47
maintenant je comprend,
merci bien ça m'était très claire
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
12 mars 2008 à 17:52
Si tu veux que je te rajoute des commentaires dans le code pour expliciter chacune des phases .
0
up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008 > Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017
12 mars 2008 à 22:06
si tu me fais ce service je te serrai reconnaissante
:)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894 > up_to Messages postés 11 Date d'inscription lundi 1 octobre 2007 Statut Membre Dernière intervention 12 mars 2008
12 mars 2008 à 22:56
config.php
<?php
$host="localhost";
$Login="root";
$Pass="xxxxx";
$DB="test";//le nom de la base
$Table="etudiants";//le nom de la table concernée
$champ_niv="niveau";//champ de la table qui alimente la liste1
$champ_etud="etudiants";//champ de la table qui alimente la liste2
?>


listes_liees.php
<html>
<head>
<!--  Script de listes deroulantes liees  avec appel  par AJAX, (evite le rechargement de la page) -->
<script language="Javascript"type="text/JavaScript">
// Requette  AJAX
			//// fonction  envoi
function makeRequest(url,id_niveau,id_ecrire){
	//les arguments passés à cette fct: url=fichier php appele, id_niveau= id a lire, id_ecrire=id ou il faut ecrire
	
	//creation de la requette
	var http_request = false;
		//toute cette partie c'est pour la compatibilité avec les navigateurs principaux
		//créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
		//jusque là
		//si ça marche pas:
        if (!http_request) {
            alert('Abandon :( Impossible de créer une instance XMLHTTP');
            return false;
        }
		
		//la on prépare la reception d ela réponse, si notre httpRequest change d'état il faudra appeler la fonction "traitementReponse"
        http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse
		
		// lancement de la requete, on va envoyer les dat au script en methode POST
		http_request.open('POST', url, true);
		//changer le type MIME de la requête pour envoyer des données avec la méthode POST ,  !!!! cette ligne doit etre absolument apres http_request.open('POST'....
		http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		
		//lecture dans la page HTML de la valeur selectionnée dans la liste qui a déclenché l'appel de httRequest
		obj=document.getElementById(id_niveau);
		//la valeur ainsi lue sera envoyée dans le champ nommé "val_sel"
		data="val_sel="+obj.value;
		//envoi:
        http_request.send(data);
}

			/////  fonction traitement de la réponse
function traitementReponse(http_request,id_ecrire) {
	var affich="";
	//on verifie que l'on a bien tout reçu
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
					// cas avec reponse de PHP en mode texte:
			//chargement des elements reçus dans la liste
			var affich_list=http_request.responseText;
				//on pointe l'objet poratnt l'id où il faut écrire, dans notre cas c'est un <div id=......>
				var obj = document.getElementById(id_ecrire);
				//on y ecrit ce qu'on a reçu du script
                obj.innerHTML = affich_list;
		} 
		else {
                alert('Un problème est survenu avec la requête.');
        }
    }
}
</script>
</head>
<?php
include ("config.php");
// Connexion a la base de donnees  
	$AccesBase = mysql_connect($host,$Login,$Pass);
	mysql_select_db($DB,$AccesBase);
	$QuestionBase = "SELECT DISTINCT $champ_niv FROM $Table  ORDER BY $champ_niv ASC " ;
	$result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error());
	$nombre_enr=mysql_num_rows($result_recherche);
?>
<body>
<form name="test1" method="post" action="liste_liees.php"  >
	<div id="id_list1">Niveau:<br>
		<select name="niv1" id="id_niv1" onChange="makeRequest('rep_PhpAjax.php','id_niv1','id_list2')">
		<!-- si changement dans la lsite on appelle le fct makeRequest en lui passant les parametres (script a appeler, id a lire, id a ecrire) -->
			<option>-- Choisissez --</option>
<?php
			while ($row=mysql_fetch_assoc($result_recherche)){
?>
					<option value="<?php echo $row[$champ_niv]?>"><?php echo $row[$champ_niv]?></option> 
<?php
			}
?>
		</select> 
		<br><br>
	</div>
	
	
	<div id="id_list2">
	<!-- ici sera charge la reponse mode texte de PHP à la request AJAX -->
	</div>
</form>
</body>
</html>


rep_PhpAjax.php
<?php
// script PHP interrogation Base de donnees pour reponse a la requette AJAX
// on genere une liste 2 en fonction du choix dans liste1 ( ex : liste1 niveaux, liste 2 etudiants de ce niveau)
include ("config.php");// on inclus ici le fichier de configuration contenant les parametres de connexion à la base

// $_POST[val_sel]  recupere la valeur que nous a envoyé la fonction httRequest  ( data="val_sel="+obj.value; )

// Connexion a la base de donnees  
	$AccesBase = mysql_connect($host,$Login,$Pass);
	mysql_select_db($DB,$AccesBase);
	//lecture valeurs dans la base correspondantes au niveau selectionnné
	//requette mysql
	$QuestionBase = "SELECT * FROM $Table  WHERE ".$champ_niv."='".$_POST[val_sel]."' ORDER BY ".$champ_etud." ASC " ;
	$result_recherche=mysql_db_query($DB, $QuestionBase) or die (mysql_error());
	
// construction de la liste deroulante
// $aff.=  permet de concatener
$aff=="";
$aff.="Etudiants:<br>
		<select name='niv1' id='cont_list2' >
		<option>-- Choisissez --</option>";
		//boucle qui parcours les extractions de la base ligne par ligne
		while ($row=mysql_fetch_assoc($result_recherche)){
			$aff.="<option value=\"$row[$champ_etud]\">$row[$champ_etud]</option>"; 
		}
	$aff.="</select><br><br>";
	
// envoi reponse Php a la fonction pour traitement	
	echo $aff;
?>
0