Vous n'êtes pas identifié(e).
Bonjour,
Suite à cette conversation,
Je vous demande votre avis sur le script suivant.
Je m'interesse en particulier en savoir plus sur XSLTProcessor().
[code javascript]
var XMLtoHTML = {
xml : '',
xsl : '',
html : '',
loadFile : function(fileName){
// Pour tous les navigateurs
if(window.XMLHttpRequest){
xhttp = new XMLHttpRequest();
}
// Sauf IE
else{
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
// On charge le fichier XML
xhttp.open("GET", fileName, false);
xhttp.send("");
return xhttp.responseXML;
},
loadXML : function(fileNameXML){
this.xml = this.loadFile(fileNameXML);
},
loadXSL : function(fileNameXSL){
this.xsl = this.loadFile(fileNameXSL);
},
transformXML : function(fileNameXML, fileNameXSL){
// On charge les données
this.loadXML(fileNameXML);
this.loadXSL(fileNameXSL);
// Pour IE
if (window.ActiveXObject){
this.html = this.xml.transformNode(this.xsl);
// document.getElementById("example").innerHTML=ex;
}
// Pour les autres
else{
if(document.implementation && document.implementation.createDocument){
xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(this.xsl);
this.html = xsltProcessor.transformToFragment(this.xml, document);
// document.getElementById("example").appendChild(resultDocument);
}
else{
alert('Erreur');
}
}
},
refreshElement : function(fileNameXML, fileNameXSL, elementID){
// On vide l'élément
this.removeAllElements(elementID);
// On transforme
this.transformXML(fileNameXML, fileNameXSL);
// On récupère le conteneur
var element = document.getElementById(elementID);
// Pour IE
if(document.all){
element.innerHTML = this.html;
}
// Pour les autres
else{
element.appendChild(this.html);
}
},
removeAllElements : function(elementID){
var element = document.getElementById(elementID);
var firstChild;
while(firstChild = element.firstChild){
element.removeChild(firstChild);
}
}
};
[/code]
Merci !
Dernière modification par moijhd (27-04-2011 10:40:31)
Hors ligne
Bonsoir,
// Pour tous les navigateurs
if(window.XMLHttpRequest){
xhttp = new XMLHttpRequest();
}
// Sauf IE
else{
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
Désolé mais j'ai arrêté ma lecture ici. Si tu arrives à faire fonctionner ce bout de code je prends des cours chez toi^^. (juste au cas où, j'entends par là qu'avec ça t'arrive à faire ce que tu as voulu que ce code fasse).
++
Dernière modification par Jc (27-04-2011 18:20:56)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bien évidement cela a fonctionné.
J'ai cependant du mal a voir pourquoi c'est si mauvais que ça
J'ai regardé ce que je pouvais trouver pour obtenir un résultat similaire :
[code javascript]
function createXMLHttpRequest() {
try { return new XMLHttpRequest(); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
alert("XMLHttpRequest not supported");
return null;
}
[/code]
Mais je fais la même chose (certes pas avec la même version) ?
Dernière modification par moijhd (28-04-2011 18:22:13)
Hors ligne
Bonjour,
C'est déjà beaucoup mieux (ce n'est pas encore ça), mais le résultat ne peut être similaire surtout si tu veux quelque chose de stable, propre et compatible multi navigateur, qui entre parenthèse ne l'est pas complètement mais c'est ton droit aussi de limiter ta compatibilité descendante. La différence est énorme car il n'y a qu'une structure try...catch pour intercepter un évènement d'erreur sur un appel d'objet qui n'existe pas, ce que ne fait pas du tout ton premier bout de code. Le deuxième bout de code le fera quand tu auras corrigé l'erreur que tu as faite.
++
Dernière modification par Jc (28-04-2011 16:58:35)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
$.ajax(...................)
a++
Hors ligne
Je pense que l'erreur se situe au niveau du choix de l'ActiveX ? Je vais chercher pour voir s'il y en a d'autres...Si en revanche il faut que j'ajoute quelque chose d'autre, je ne vois pas ^^
Concernant le $.ajax, je suppose qu'il faut référence à un framework (ce qui a priori ne m'intéresse pas ^^).
Dernière modification par moijhd (28-04-2011 18:11:59)
Hors ligne
[code javascript]
function createXMLHttpRequest() {
try { return new XMLHttpRequest(); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
throw new Error("This browser does not support XMLHttpRequest.");
return null;
}
[/code]
??
J'ai ajouté des versions (je suppose qu'il y en a d'autres) et généralisé la méthode...mais je vois pas pourquoi ça serait mieux...
Et maintenant je me demande à qui servent les versions Msxml2.XMLHTTP, pour quoi les utiliser, et quelle version ?
Cette page indique pour 6 et 3 et pas les autres : http://blogs.msdn.com/b/xmlteam/archive … lorer.aspx
Dernière modification par moijhd (28-04-2011 18:50:59)
Hors ligne
Bonsoir,
Quand on ne comprends pas, on essaye de lire, et peut être que je m'exprime mal. J'ai bien dit que c'etait ton droit de limiter ta compatibilité descendante, et par conséquent ton soucis ne viens pas du choix de tes activeX, mais .... que reste-t-il donc? ... de l'utilisation de ta structure try...catch. Je te recommande, surtout quand on ne connait pas, de lire la documentation.
A bientôt.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
[code javascript]
try {
return new XMLHttpRequest();
}
catch(e) {
alert("XMLHttpRequest not supported");
return null;
}
[/code]
est licite ?
Et je fais ça pour tous ? Je le cascade ?
J'avais mal compris ta deuxième réponse. Je me suis attardé sur les versions. Ce que je proposais ne visait que les versions ^^
A vrai dire, je ne vois pas l'erreur concernant le try catch dans :
[code javascript]
function createXMLHttpRequest() {
try { return new XMLHttpRequest(); } catch(e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
alert("XMLHttpRequest not supported");
return null;
}
[/code]
Dernière modification par moijhd (28-04-2011 19:02:41)
Hors ligne
>>Concernant le $.ajax, je suppose qu'il faut référence à un framework (ce qui a priori ne m'intéresse pas ^^).
dommage
vu ton niveau, çà aurai facilité les choses
a++
Hors ligne
Je ne sais pas comment je dois le prendre :s (je crois plutôt négativement, mais je n'en suis pas sur).
Dernière modification par moijhd (28-04-2011 19:00:42)
Hors ligne
nan, absolument pas
il faut le prendre positivement
il faut faire avancer les choses
a++
Hors ligne
enfin moi, pour ma part, je ne te conseillerai pas sur une abération
a++
Hors ligne
Bonsoir,
Tu as peut être raison Pierrot, mais moi je suis de ceux qui préconisent de comprendre la technologie avant d'utiliser un framework qui rajoute une couche d'abstraction supplémentaire.
Car je trouve ta démarche très réductrice pour tout framework en général. Je ne veux pas lancer la polémique non plus, mais aujourd'hui bon nombre de programmeurs sur le marché du travail sont la plupart du temps incapables de développer sans leur framework, une vrai catastrophe. Un framework doit être utilisé pour réduire les temps de développement et les erreurs/déboggages qui en découlent pas pour ignorer ce que l'on fait.
@moijhd :
1.
function createXMLHttpRequest() {
2.try { return new XMLHttpRequest(); } catch(e) {}
3.try { return new ActiveXObject("Msxml2.XMLHTTP.6.0"); } catch (e) {}
4.try { return new ActiveXObject("Msxml2.XMLHTTP.3.0"); } catch (e) {}
5. try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
6.try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
7.throw new Error("This browser does not support XMLHttpRequest.");
8.return null;
}
Cette fonction en résumé va créer une instance de tous les objets qu'elle va arriver à créer (EDIT: + une erreur qui va te dire "This browser..."), or c'est pas ce que l'on souhaite. Catch en anglais veut dire attraper, ici en l'occurence intercepter l'erreur récupérable lancé par le système si celui-ci n'arrive pas à instancier l'objet défini dans l'instruction try. Donc ce qui sera éxécuté dans { } après le catch le sera que si l'instanciation de l'objet défini dans la clause try a échoué.
Normalement si tu ne t'en sors pas avec cette explication, je te conseille de relire et d'essayer de comprendre avant de poster un code et me demander si c'est ça qu'il faut faire. merci.
à bientôt
Dernière modification par Jc (28-04-2011 19:30:31)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
>>Tu as peut être raison Pierrot
tu enlèves le "peut être" et tu es 100% dans le vrai
lis bien les termes que tu emplois toi même : "programmeur"
un individu qui s’emmêle les pinceau dans 5 lignes de code ne peut être qualifié de "programmeur", tout au plus "bricoleur".
je ne pense pas être trop mauvais à ce jeux et moi, j'utilise JQUERY
c'est loin d'être réducteur, le preuve, je me suis essayé à développer un framework.
je dirai même que c'est une sage décision
certes, moijhd n'est peut être (même certainement pas) développeur et c'est bien pour çà que c'est la seul décision çà prendre
a++
Hors ligne
Lit aussi ce que j'ai dit. j'ai jamais dit que c'etait réducteur d'utiliser un framework, j'ai dit que c'etait réducteur pour un framework que de l'utiliser pour éviter d'apprendre ce que l'on fait.
Je ne suis pas de ceux qui veulent réinventer la roue.
Si tu veux une critique à propos des frameworks, je vais te faire plaisir, je vais t'en donner une : le jour où le framework concerné passe aux oubliettes et n'est plus maintenu, c'est autant d'applications qui sont basées dessus qui passent à la trappe et qui doivent être redéveloppées.
Dernière modification par Jc (28-04-2011 19:29:20)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
>>le jour où le framework concerné passe aux oubliettes et n'est plus maintenu, c'est autant d'applications qui sont basées dessus qui passent à la trappe et qui doivent être re-développées.
vrai, c'est pour çà que c'est une vrai décision
et je ne pense pas qu'un framework comme JQUERY tombera aux oubliettes
a++
Hors ligne
Je suis d'accord avec toi sur ce point aussi.
Je vais faire mon MK : c'est un forum de débutants et comme tout débutant on doit apprendre. Ex: On commence par apprendre à marcher, ensuite on apprend à courrir, et puis le jour où on souhaite aller plus vite, ou qu'on en a marre de marcher, on prends une voiture. La mauvaise raison de prendre une voiture serait de le faire pour éviter d'apprendre à marcher. Ben c'est pareil avec les frameworks^^
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
enfin, apprendre à marcher avec un youpala, c'est plus facile
et puis, pourquoi utiliser MySql, autant utiliser des fichier textes :D
je dirai même qu'un peu d'assembler n'est pas mal non plus :D
enfin, moi ché pas, chui même pas développeur :D
a++
Hors ligne
:D:D
Tu m'éclates lol
Demain je vais aller au bureau avec un youpala, et si on me demande pourquoi, je vais leur répondre que j'ai décidé de me remettre au jquery mais que je souhaite y aller progressivement lol
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bon, le but est d'utiliser le meilleur ActiveX si besoin et si possible. Je veux donc chercher à créer les objets dans l'ordre que je les ai donné. Cependant, dès que j'arrive à en créer un, les précédents n'ayant pas été créés, je veux le retourner et ne pas faire les autres try.
Je vais essayer de résumé ce qui me semble pertinent dans mon cas.
On essaie de réaliser le contenu d'un bloc try. Si cela échoue, on effectue les instructions du bloc catch associé (qui connait la raison de l'erreur).
L'utilisation de throw entraine l'arret du script. Je ne peux donc l'utiliser qu'à la fin du script puisque je veux essayer tous les cas jusqu'à réalisation.
Return met fin à la fonction en sortant le resultat courant. Il n'est atteint qu'en cas de succès de la création.
Dans ces conditions, si l'un des try se réalise, alors on sort l'objet courant créé, la création des précédents ayant échoué. Enfin, si aucun ne convient, l'instruction throw met fin au script.
Du coup, je ne vois pas pourquoi "Cette fonction en résumé va créer une instance de tous les objets qu'elle va arriver à créer". Je ne vois pas à côté de quoi je passe.
Dernière modification par moijhd (28-04-2011 19:56:33)
Hors ligne
qui te parle de progressivité ?
justement, l'utilisation d'un framework est un bond
donc, tu passe directement dans la voiture sans savoir marcher :D:D
a++
Hors ligne
compare avec ça et dit moi si tu as compris la différence
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Sinon
1) new XMLHttpRequest();
2) new ActiveXObject("Msxml2.XMLHTTP");
3) new ActiveXObject("Microsoft.XMLHTTP");
est largement suffisant aujourd'hui
De plus l'utilisation de throw ne provoque pas l'arrêt du script mais se contente juste de lancer une exception personnalisée
Dernière modification par Jc (28-04-2011 20:04:19)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
bon, j'vous aide
ca devrai fonctionner comme çà
a++
Hors ligne