Retourner sur PHPFrance


 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   Accéder aux archivesArchives  S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
PHPFrance est maintenu par des bénévoles et soutenu par les sociétés Actoo et Anaska, Conseil et Formation pour PHP
Pour optimiser vos chances commencez par consulter la FAQ et faites une recherche.
Bon esprit, politesse et entraide sont les règles de ce forum.

DEBUTANTE AJAX ! =(

 
Poster un nouveau sujet   Répondre au sujet    PHPFrance Index du Forum -> Javascript, AJAX
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
charlottebardet
Invité




MessagePosté le: 22 Avr 2008, 10:53    Sujet du message: DEBUTANTE AJAX ! =( Répondre en citant

Bonjour Very Happy

Dans le cadre d'un stage de fin de DUT je dois modifier une appplication à l'aide d'Ajax.

Cette application fonctionne sur le principe des onglets (onglet1, onglet2, onglet3 ...). A l'intérieur de chacun de ces onglets se situent des petits tableaux "+" "-" présentant différentes gdesParties.

On peut ainsi ouvrir ou fermer gdePartie1, gdePartie2, gdePartie3 ... en cliquant sur des plus ou des moins.

Pour ce qui est de l'affichage instantané (sans rechargement de toute la page) lorsqu'on clique sur un "+" ou de la disparition lorsqu'on clique sur un "-" je l'ai fait en php à l'aide des display:block; display:none;

Mais à l'intérieur de ses gdesParties se situent également des sousParties que l'on peut également ouvrir ou fermer avec des "+ et "-".

L'affichage de ces sousParties ne peut s'effectuer de la même façon que l'affichage des gdesParties car elles nécessitent des calculs qui font appel à des fonctions php.
Pour cette partie j'utilise donc l'Ajax.

Malheureusement il existe déjà un fichier Ajax que le développeur précedent à créé pour les onglets.

Ci-dessous vous trouverez sa fonction pour la création de l'objet XmlHttpRequest, puis ma fonction Test à moi que je n'arrive pas à faire fonctionner Crying or Very sad .

Je ne sais pas du tout quoi passer comme paramètres lors de l'appel de sa fonction de création de l'objet XmlHttpRequest car moi la fonction que je pensais écrire pour la création de cet objet était sans paramètre .

J'obtient donc toujours la même erreur : "page_request has no properties" Rolling Eyes

Code:

--------------------------------------------------------------------------
FONCTION DEJA EXISTANTE
--------------------------------------------------------------------------
 
var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadstatustext="<img src='img/loading.gif' /> Chargement en cours..."
 
////NO NEED TO EDIT BELOW////////////////////////
var loadedobjects=""
var defaultcontentarray=new Object()
var bustcacheparameter=""
 
function ajaxpage(url, containerid, targetobj){
var page_request = false
if (window.XMLHttpRequest) // Firefox et autres
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // Internet Explorer
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
}
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else{ // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return false
}
var ullist=targetobj.parentNode.parentNode.getElementsByTagName("li")
for (var i=0; i<ullist.length; i++)
ullist[i].className=""  //deselect all tabs
targetobj.parentNode.className="selected"  //highlight currently clicked on tab
if (url.indexOf("#default")!=-1){ //if simply show default content within container (verus fetch it via ajax)
document.getElementById(containerid).innerHTML=defaultcontentarray[containerid]
return
}
document.getElementById(containerid).innerHTML=loadstatustext
page_request.onreadystatechange=function(){
loadpage(page_request, containerid)
}
if (bustcachevar) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}
 
-------------------------------------------------------------------------
MA FONCTION
-------------------------------------------------------------------------
 
function go(){
   var page_request = ajaxpage(/*????????????????????????*/)
   // On défini ce qu'on va faire quand on aura la réponse
   page_request.onreadystatechange = function(){
      // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
      if(page_request.readyState == 4 && page_request.status == 200){
             alert(page_request.responseText);
      }
   }
   page_request.open("GET","ajax.php",true);
   page_request.send(null);
}
 
--------------------------------------------------------------------------



Je suis complètement perdue! Sad
Merci d'avance pour l'aide que vous pourrez m'apporter
Wink
DjMmix
Invité




MessagePosté le: 22 Avr 2008, 21:25    Sujet du message: Répondre en citant

simple ta fonction ne doit contenir aucun paramètre entre parenthèse
DjMmix
Invité




MessagePosté le: 22 Avr 2008, 21:35    Sujet du message: Répondre en citant

désoler j'avai pas bien regarder ta fonction

les 3 parametre son url =le fichier dout son t est donnée
contenerid= id de ta balise <div> <span> conserner dans ton code html qui contiendra le contenue de ton fichier texte ou xml
targetobj=l'onglet sur ton code html
Invité





MessagePosté le: 23 Avr 2008, 08:25    Sujet du message: Répondre en citant

Re Embarassed

Je ne vois pas vraiment comment procéder.. Confused
Un exemple d'une fonction déjà existante utilisant la fonction de création de l'objet XmlHttpRequest :

Code:

function expandtab(tabcontentid, tabnumber){ //interface for selecting a tab (plus expand corresponding content)
var thetab=document.getElementById(tabcontentid).getElementsByTagName("a")[tabnumber]
if (thetab.getAttribute("rel")){
[color=red]ajaxpage(thetab.getAttribute("href"), thetab.getAttribute("rel"), thetab)[/color]loadobjs(thetab.getAttribute("rev"))
}
}


ou encore

Code:

function startajaxtabs(){
for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
var ulobj=document.getElementById(arguments[i])
var ulist=ulobj.getElementsByTagName("li") //array containing the LI elements within UL
for (var x=0; x<ulist.length; x++){ //loop through each LI element
var ulistlink=ulist[x].getElementsByTagName("a")[0]
if (ulistlink.getAttribute("rel")){
var modifiedurl=ulistlink.getAttribute("href").replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/")
ulistlink.setAttribute("href", modifiedurl) //replace URL's root domain with dynamic root domain, for ajax security sake
savedefaultcontent(ulistlink.getAttribute("rel")) //save default ajax tab content
ulistlink.onclick=function(){
[color=red]ajaxpage(this.getAttribute("href"), this.getAttribute("rel"), this)[/color]loadobjs(this.getAttribute("rev"))
return false
}
if (ulist[x].className=="selected"){
ajaxpage(ulistlink.getAttribute("href"), ulistlink.getAttribute("rel"), ulistlink) //auto load currenly selected tab content
loadobjs(ulistlink.getAttribute("rev")) //auto load any accompanying .js and .css files
}
}
}
}
}


Tout deux utilisent une variable préalablement déclarée (je ne comprends pas très bien à quoi sert la variable).

Je vous remet mon petit bout de code Test...

Code:

function go(){
var page_request = ajaxpage(/*????????????????????????*/)
// On défini ce qu'on va faire quand on aura la réponse
page_request.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
if(page_request.readyState == 4 && page_request.status == 200){
alert(page_request.responseText);
}
}
page_request.open("GET","ajax.php",true);
page_request.send(null);
}
DjMmix
Invité




MessagePosté le: 22 Juil 2008, 14:24    Sujet du message: Répondre en citant

si je regarde les deux codes que tu a adjoint celle-ci on été declarer avec des paramètre, hors celle que tu a crée avec le même nom n'a pas de paramètre.d'ou l'erreur générer
DjMmix
Invité




MessagePosté le: 22 Juil 2008, 14:31    Sujet du message: Répondre en citant

pour ta fonction test tu veut redéfinir deux fois la fonction d'appel a l'objet XMLHTTPREQUEST Shocked
déjà la ta un problème car la fonction de AJAXpage contien déjà l'appel de la fonction dans cette même fonction tu n'a qu'a passer les paramètre que je t'ai citer plus haut.

Après je ne vois aucune difficulté Laughing

PS: prend pas en compte mon poste que j'ai fait y a 5 minute :p
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    PHPFrance Index du Forum -> Javascript, AJAX Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous pouvez poster de nouveaux sujets dans ce forum
Vous pouvez répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum
Powered by phpBB © phpBB Group - PHPFrance est hébergé par Sivit