11548 sujets

JavaScript, DOM et API Web HTML5

La réponse :

Comment utiliser l'appel de function ajax "asyncrone" depuis un lien html, sans raffraichissement de la page dans Opera 9.0+ ?

Faux:
<a href="#" onclick="javascript:function();" ></a>

Vrai:
<a href="#" onclick="javascript:function(); return false;" ></a>


Voila

######################################
######################################

Bonjour,

Voila j'ai un soucis avec un script xhr (ajax) qui recupere le code d'une page php pour l'afficher dans un contener div.

J'ai testé mon code sur IE, FF, Maxthon et il fonctionne super bien !

Mais sous Opera 9 il me fais quelque chose de bizard, quand je lance mon site il charge la premier page avec la function XHR, jusqu'à la tout est correct !
Et dès que je souhaite charge une autre page depuis le menu, il lance la function XHR est juste appret avoir lancer le xhr.open(.....) il recharge la page actuelle !

function requetXHR(url,div){
	if(window.XMLHttpRequest){
	   xhr = new XMLHttpRequest();
	}else if(window.ActiveXObject){
	   xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
	} else {
	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
	   return; 
	}
	xhr.open("GET",url, true);
	xhr.onreadystatechange = function(){ 
		if(xhr.readyState == 4){
			document.getElementById(ico).style.display = 'none';
			document.getElementById(div).innerHTML = xhr.responseText;
		}else{
			document.getElementById(ico).style.display = 'block';	
		}
	}
	xhr.send(null);
}


Je ne sais pas si vous comprenez mon problème ?

Quelqu'un saurai de ou peut venir le probleme ?

Merci d'avance ! Smiley cligne
Modifié par badoux (17 Dec 2006 - 16:33)
Bonjour,
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
Je ne vais pas beaucoup t'aider, mais je ne comprends pas de toujours voir le même code bidon. En quoi est-ce que l'utilisateur est intéressé par l'information "Votre navigateur ne supporte pas les objets XMLHTTPRequest..." ? Il faut prévoir une alternative pour les navigateurs qui ne supportent pas XHR, ou dans le pire des cas renvoyer un message d'erreur un peu plus explicite.
Modifié par Eldebaran (16 Dec 2006 - 18:04)
Salut, Eldebaran

Merci quand même de ta réponse !

En effet, ce n'est pas très comprehensif pour des ... je retrouve plus le mots ... heu heu..., non, vraiment je l'ai plus ! Bon je vais dire novice Smiley cligne , je m'attaquerai plus tard a ce problème en attendant je vais laisser ce message qui est heureusement que peut affiché Smiley cligne

Si je devrai trouver un alternative à ce probleme en ce moment je ne serai pas sortie de l'auberge "comme on dit chez nous en suisse" Smiley lol Smiley ravi

Merci quand même ! Malheureusement ce n'ai pas la cause de mon problème ! Smiley biggrin

Si tu as une idée, redi moi !

@+
Je suis dans la grosse mer*****de !

Opera ne supporte pas la balise
<a href="#">

avec la function
onclick="javascript:xhr..."


je m'explique:

J'ai mon menu avec des boutons formats
<a href="#" onclick="apelle la function xhr ajax">

lors ce que je clique dessus le bouton il lance le chargement javascript asyncrone du fichier, mais entre deux il recharge la page totalement Smiley bawling Smiley sweatdrop

Que puis-je bien faire, outre le faite de changer tout mes boutons
<a href="...

par des
<div onclick=""...

ce qui correspond à changer tout mon code !!!!??? Smiley ohwell Smiley bawling
Modérateur
Salut,

Si tes boutons ne servent qu'au javascript, tu devrais les créer via JS mais...
normalement, ta page doit fonctionner sans JS, c'est à dire qu'en cliquant sur les liens habituels, tu devrais changer de page donc le mieux serait de faire des liens normaux :
<a href="lien.htm">lien</a>

... et tu annihiles la transmission de l'url via JS en lançant XHR à la place... le tout sans le moindre code JS dans la partie (x)html.

cf ce tuto pour plus d'explications. Smiley cligne
Salut à tous,

Désolé du retard, j'avais un diné post Noël Smiley cligne

Merci beaucoup koala64 tu m'a trouvé la solution, donc pas besoin de retaper tout le code, j'utilise pour le moment:
return false;

je vais plus tard, développer mon app en RoR, à ce moment là, je travaillerai différement mes liens !

Merci beaucoup ! Smiley ravi