jnbdzjnbdz
Messages postés79Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention10 juillet 2008
-
25 nov. 2006 à 05:58
jnbdzjnbdz
Messages postés79Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention10 juillet 2008
-
12 janv. 2007 à 01:32
Questions comment je retire le contenue d'un dans un element. Jai essayer avec tout les facons que jai vue sur Internet et il en pas une qui marche. J'ai essayer avec innerHTML sa marche pas jaiaussi essayer avec var valueoftherightitem = so_getText(tagget,para); et sa maffiche que aaa Part1 quand ses supposer me donner aaa Part1
;
Voici le code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/JavaScript">
/**
* XML HTTP REQUEST
*/ var callcontent = "false";
var left = "";
var headfoot = "";
var foot = "";
var biglink = "";
var classea = "";
var classe = "";
var valueofselopt = "";
var myArray=new Array();
var toArray=new Array();
var rwhere=new Array();
var xhr = null;
function getXhr()
{
if(window.XMLHttpRequest) // Firefox et autres
{
xhr = new XMLHttpRequest();
}
else if(window.ActiveXObject){ // Internet Explorer
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
xhr = false;
}
}
function so_getText(obj,where) {
if(obj.textContent) return obj.textContent;
if (obj.nodeType == 3) return obj.data;
var txt = new Array(), i=0;
var append = where.appendChild(obj.childNodes);
while(append[i]) {
txt[txt.length] = append[i];
i++;
}
return txt.join("");
}
function so_clearInnerHTML(obj) {
// perform a shallow clone on obj
nObj = obj.cloneNode(false);
// insert the cloned object into the DOM before the original one
obj.parentNode.insertBefore(nObj,obj);
// remove the original object
obj.parentNode.removeChild(obj);
}
function requestcont(callcontent,where,valueofselopt)
{
whereto(where);
function whereto(where)
{
where = where;
return where;
}
getXhr();
// On défini ce quon va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
whereto(); if(xhr.readyState 4 && xhr.status 200){
//document.getElementById('tmpm').innerHTML = xhr.responseText;
for (i=0;i<xhr.responseXML.getElementsByTagName("nssajax").length; i++) {
var tagget = xhr.responseXML.getElementsByTagName("nssajax")[i];
var idAttr = tagget.getAttributeNode("atrwhere");
var getattr = tagget.getAttribute("atrwhere");
alert(tagget.cloneNode(true));
var vaofattr = idAttr.value;
var para = document.getElementById(vaofattr);
var valueoftherightitem = so_getText(tagget,para);
alert(valueoftherightitem);
document.getElementById(vaofattr).innerHTML = valueoftherightitem;
//para.appendChild(tagget);
}
}
};
function block(wi,action)
{
var elementNodeReference = document.getElementById(wi);
if (action == "open")
{
elementNodeReference.className = "blockshow";
}
if (action == "close")
{
elementNodeReference.className = "blocknone";
}
}
function moreless(where) {
var elementNodeReference = document.getElementById(where);
if (elementNodeReference.style.display != "none")
{
elementNodeReference.style.display = "none";
}
else
{
elementNodeReference.style.display = "block";
}
}
function startTime()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
// add a zero in front of numbers<10
m=checkTime(m);
s=checkTime(s);
document.getElementById('txt').innerHTML= h+":"+m+":"+s;
t=setTimeout('startTime()',500);
}
function checkTime(i)
{
if (i<10)
{i="0" + i;}
return i;
}
</script>
</head>
première chose à faire, changer entre les balises nssajax les < et les > en < et > pour qu'elles ne soient pas prise en compte directement...
exemple de ligne
...
<nssajax atrwhere ="default">
aaa
<h2>Part1</h2>
</nssajax>
...
ensuite la lecture et l'écriture deviennent la suivante...
//-- Les données sont prêtes
if( xhr.readyState = = 4){
//-- Si réponse OK
if( xhr.status == 200){
//-- Récup contenu fichier
Obj = xhr.responseXML;
//-- Récup contenu fichier
var szTag = new Array(" nssajax "); // tableau de balises à récupérer
var ODiv = null;
var szDiv = "";
//-- on parcours les balises
for( var i =0; i < szTag.length; i++){
OTag = Obj.getElementsByTagName( szTag[i]);
if( OTag){
for( var k=0; k <OTag.length; k++){
szDiv = OTag[k].getAttribute(" atrwhere ");
ODiv =
document.getElementById( szDiv);
if( ODiv)
ODiv.innerHTML = OTag[k].textContent;
}
}
}
}
}
une seule lecture suffit, cela devrait te convenir...
bon voila bonne PROG...
;0)
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 9 janv. 2007 à 19:05
B onjour...
Je résume ta fonction...
function sprequest(callcontent){
$("load").className = "load";
getXhr();
var requestarray = new Array();
xhr.onreadystatechange = function(){
//-- Si Requete complete
if( xhr.readyState==4){
//-- Si réponse OK
if( xhr.status == 200){
//-- Récup contenu fichier
//-- on parcours les balises
}
}
else if (xhr.status == 404){
alert("Error: 404!");
}
};
Il faut tester le status si la requete est compléte soit
function sprequest(callcontent){
xhr.onreadystatechange = function(){
//-- Si Requete complete
if( xhr.readyState==4){
//-- Si réponse OK
if( xhr.status==200){
//-- Récup contenu fichier
}
//-- Si Not Found
else if (xhr.status == 404){
alert("Error: 404!");
}
}
};
imbrication de
else if (xhr.status == 404){
dans
if( xhr.readyState==4){
Je débute aussi en XML alors indulgence, j'avance tout doucement...Alors
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 27 nov. 2006 à 18:09
Bonjour...
J'ai un peu de mal à tout comprendre...
notament dans ta fonction
function sprequest(callcontent){...}
tu fais appel à la function
requestcont
qui requière 3 arguments mais tu n'en passes que 2 ???
et qui enchaîne sur une autre requête...donc tu fais autant de requête qu'il y a d'éléments dans le tableau requestarray[]...!!!
dans la fonction reprise ci dessous, à quoi sert whereto dont tu n'exploites pas la valeur retournée, et qui est appellée 2 fois ?
function requestcont(callcontent,where,valueofselopt){
if (callcontent.length = = 0){
callcontent = valueofselopt;
}
else{
callcontent = callcontent;
}
whereto (where);
function whereto(where){
return where;
}
getXhr();
// On défini ce quon va faire quand on aura la réponse
xhr.onreadystatechange = function(){
// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
whereto(); if(xhr.readyState 4 && xhr.status 200){
document.getElementById(where).innerHTML = xhr.responseText;
}
};
adressbase="teste_gig.php?content=";
call=callcontent;
alert(call);
mix=adressbase+call;
xhr.open("GET", mix,true);
xhr.send(null);
}
Je te propose néanmoins un test c'est de mettre += dans cette fonction...
if(xhr.readyState 4 && xhr.status 200){
document.getElementById(where).innerHTML += xhr.responseText;
}
...et de voir ce qui est renvoyé en final...
jnbdzjnbdz
Messages postés79Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention10 juillet 2008 27 nov. 2006 à 23:57
Bon, voici en détaille ce que jessais de faire.
Commencon avec le pourquoi:
J'ai commencer a faire une application web avec ajax, audébut tout fonctionnais jusquatent que je déside de me compliquer la vie...
Je me suis retrouver avec ce problème j'avais 9 endroits différent a loader du contenue et non un. C'est la que jai chercher sur google et jai rien trouver j'ai alors décider de loader une fois tout le contenue des 10 element que je voulais affecter dans 10 element "inventer" ou javascript prendrais le attrwhere= "" pour savoir dans quelle element le contenue devais aller et prendre le contenue de ses élément.
Exemple:
_Envoie de la requeste_
_le serveur traville..._
_le serveur envoie le contenue..._
_la javascript prend le contenue du premier element...
<nssajax attrwhere ="part1">
allohum
<hr /> n'importequoi...
</nssajax>
_et le découpe et l'insert dans le div prédéfini...
allohum
<hr /> n'importequoi...
apprais il prend l'autres et l'autre jusquatent qu'il les face tout...
Bon sa cétais ma première idée mais bon sa n'as pas marcher car je n'était pas capable de trouver une facon de prendre le contenue dans <nssajax> </nssajax>, au début jai penser a innerHTML mais sa pas marcher.
_javascript prend se qui se trouve dans les elements request et le met dans un array...
_apprais il renvoie des requeste baser sur le array...
Exemple il commence avec le premier
apprais le deuxième
apprais le troisième
etc...
Le problème ses que les endroit ou le contenue doit se loader son déja prédéfini, c'est pour sa que je ne peu les créé et ses pour sa que + = ne marche pas je ne rajoute pas le même contenue dans le même div mais dans plusieur qui son déja défini.
jnbdzjnbdz
Messages postés79Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention10 juillet 2008 28 nov. 2006 à 00:01
Dit le moi si tu n'est pas sur car je sais que je fais beaucoup de fautes de français et fait moi confience quand je te dit que sa fait 5 personne qui on essayer de m'aider et il en a pas un qui a réussis a trouver une solution a mon problème.
jnbdzjnbdz
Messages postés79Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention10 juillet 2008 9 janv. 2007 à 04:39
Rebonjour, jai essayer se que tu as fait et sa fonctionne a merveille sur Firefox et Opera, mais explorer veu rien savoir.
Voici la fonction, jai rajouter des trucs:
function $(id) { return document.getElementById(id); }
function sprequest(callcontent)
{
$("load").className = "load";
getXhr();
var requestarray = new Array();
xhr.onreadystatechange = function(){
if( xhr.readyState==4){
//-- Si réponse OK
if( xhr.status==200){
//-- Récup contenu fichier
if(navigator.appName == "Microsoft Internet Explorer"){var Obj=xhr.responseXML; alert("This option is not evelabole for the moment on Internet Explorer, please use Firefox.");} else {var Obj=xhr.responseXML;}
if(mozillaFlag){
removeWhitespace(Obj);
}
//-- Récup contenu fichier
var szTag = new Array("nssajax"); // tableau de balises à récupérer
var ODiv = null;
var szDiv = "";
//-- on parcours les balises
for( var i=0; i < szTag.length; i++){
OTag = Obj.getElementsByTagName(szTag[i]);
if( OTag){
for( var k=0; k <OTag.length; k++){
szDiv = OTag[k].getAttribute("atrwhere");
ODiv = $(szDiv);
if( ODiv)
ODiv.innerHTML = OTag[k].textContent;
$("load").className = "loadnone";
}
}
}
}
}
else if (xhr.status == 404)
{
alert("Error: 404!");
}
};
jnbdzjnbdz
Messages postés79Date d'inscriptionvendredi 26 mai 2006StatutMembreDernière intervention10 juillet 2008 12 janv. 2007 à 01:32
Merci encore une fois, sa marche.
Mais sa ne marche toujours pas sur Explorer 6.0, sa me renvoie undefined.
else if (xhr.status == 404){
alert("Error: 404!");
}
Ça sa marche.
Mais la requeste XML ne marche pas sur Explorer.
Si je rajoute xml a Obj=xhr.responseXML comme ce si: Obj=xhr.responseXML.xml et je le met dans un alert(); sa maffiche le XML dans le alert mais il veu pas l'afficher dans la page. Je te dit sa car sa pourais t'aider. En temps normale je ne me casserais pas la tete avec Explorer car jen est plain le *** avec ce navigateur qui a été fait par des ***. Mais je n'est pas le chois car le monde qui von utiliser mon application on en majoriter Explorer et je ne peu pas commencer a aubliger a tout le monde a utiliser Firefox même si sa serais une idée géniale. Mais si sa continue comme sa je n'aurais pas le choix.
Entoucas, Merci encore une fois pour ton aide, "You are a life saver!!!" MERCI!!!