CHARGER UNE PAGE PHP OU HTML DANS UN DIV

toutphp Messages postés 107 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 5 mai 2010 - 5 mai 2006 à 11:05
cs_robinou59 Messages postés 2 Date d'inscription vendredi 5 décembre 2008 Statut Membre Dernière intervention 4 décembre 2010 - 4 déc. 2010 à 14:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/37447-charger-une-page-php-ou-html-dans-un-div

cs_robinou59 Messages postés 2 Date d'inscription vendredi 5 décembre 2008 Statut Membre Dernière intervention 4 décembre 2010
4 déc. 2010 à 14:47
Bonjour,
Merci pour votre script il ma vraiment aidé mais je me pose tout de même une petite question comment faire pour que les accents s'affiche et non un petit carré a leur place ? Merci d'avance
MissArmande Messages postés 5 Date d'inscription vendredi 19 mars 2010 Statut Membre Dernière intervention 16 avril 2010
15 avril 2010 à 11:57
Bonjour à tous,

Le code fonctionne très bien, c'est exactement ce dont j'avais besoin, merci Atlante34.
Cependant, en plus d'afficher une page dans une div choisie, j'aimerais faire un scroll automatique vers une ancre de cette page (c'est-à-dire que, dans ma div, l'ancre située dans la page appelée soit en haut du cadre).

En utilisant les propriétés offsetTop et scrollTo, j'arrive presque au résultat voulu, MAIS je bute sur un détail: je n'arrive pas à récupérer l'offsetTop absolu sur la page (en incluant les parents...). Mon ancre se retrouve en haut de ma page, et non pas en haut de ma div.
Je n'arrive pas à integrer la fonction de getOffset incluant les positions des parents, et j'ai essayé par tous les moyens que j'ai pu imaginer avec mes faibles connaissances en js.

Pour l'instant, j'ai le code où j'ai intégré l'offsetTop de mon ancre et un scrollTo cet offset:

function envoieRequeteC(url,id,ancre)
{
var xhr_object = null;
var position = id;
var hauteur = ancre;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function()
{
if ( xhr_object.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position).innerHTML = xhr_object.responseText;
document.getElementById(position).scrollTop = document.getElementById(hauteur).offsetTop;
}
}
// dans le cas du get
xhr_object.send(null);

}

mais je n'arrive pas à intégrer la fonction de calcul d'offsetTop absolu:
function getOffset(obj) {
var offsetTop = obj.offsetTop;
while ((obj = obj.offsetParent )!=null) {
offsetTop += obj.offsetTop;
}
return [offsetTop];
}
ni en appelant la fonction à l'intérieur de ma fonction, ni en l'intégrant directement dans ma fonction.

Quelqu'un peut-il m'aider?
Merci d'avance.
120120 Messages postés 5 Date d'inscription lundi 28 mars 2005 Statut Membre Dernière intervention 6 janvier 2010
6 janv. 2010 à 06:17
Bonjour,

Voici une autre approche :

http://www.phpcs.com/codes/RAFRAICHIR-PLUSIEURS-DIV-CLIC-AJAX_51077.aspx

Il s'agit d'une classe php qui permet de charger de manière dynamique PLUSIEURS liens dans PLUSIEURS DIV d'une page en un seul clic (en AJAX).

Bonne journée
flk974 Messages postés 5 Date d'inscription vendredi 4 avril 2008 Statut Membre Dernière intervention 9 décembre 2009
9 déc. 2009 à 02:48
J'ai modifié le code pour pouvoir récupéré le contenu d'une page web
pour plus information.
http://www.javascriptfr.com/codes/CHARGER-PAGE-WEB-DANS-DIV_50954.aspx
ibaom Messages postés 4 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 9 janvier 2009
22 sept. 2009 à 17:32
desolé pour le dernier message
quelque chose qui peut interresser des personnes sur cette question:
http://tutorialzine.com/2009/09/simple-ajax-website-jquery/
bon du coup c'est de l'ajax, mais ca permet de garder des élements toujours en place (par exemple un lecteur audio...pour eviter les coupures)
apres ca peut poser des problemes en terme de seo...
ibaom Messages postés 4 Date d'inscription mercredi 9 avril 2008 Statut Membre Dernière intervention 9 janvier 2009
20 sept. 2009 à 09:24
Je me permet de reiterer la question de swissikarim à savoir:
"comment garder dans une variable la dernière page que j'ai chargé"
afin de pouvoir faire de retour sur les pages via le navigateur...
j'ai pas trouvé, si quelqu'un a une piste :-)
swissikarim Messages postés 30 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 17 février 2011
19 sept. 2009 à 14:54
bonjour tout le monde
la solution pour interpreter javascript dans une page charger dans le div est la suivante:
function envoieRequete(url,id)
{
var xhr_object = null;
var position = id;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function (){ if (xhr_object.readyState 4 && xhr_object.status 200){
var c = document.getElementById(position);
c.innerHTML = xhr_object.responseText;
//maintenant que les données reçu on été placé dans la page,
//il faut exécuter toutes les balise script :
var allscript = c.getElementsByTagName('script');
for(var i=0;i< allscript.length;i++){
eval(allscript[i].text);
}
//alert(typeof(une_function_dans_mes_balise_script));//return function
}
}
// dans le cas du get
xhr_object.send(null);

}
swissikarim Messages postés 30 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 17 février 2011
10 sept. 2009 à 10:40
bonjour tout le monde
je trouve une grande mauvaise surprise après l'application du code d'ajax à mon code source.
ca le problème:
avant d'appliquer le code ajax à ma page d'accueil tout les importations des scripts de css, javascript ou jquery sa marchent bien et tout les styles fonctionnent comme il faut.
Mais aprés l'ajout du code ajax et lorsque appeler mes pages dans la div content de ma page d'accueil ne fonctionne aucune importation de css ou jquery et ...
svp aider moi pour résoudre ce probléme
merci d'avance
swissikarim Messages postés 30 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 17 février 2011
8 sept. 2009 à 14:53
bonjour tout le monde
je trouve cette réponse dans ce forum pour la retour au les pages
précédente mais je peut voir un exemple pour le fait en pratique:
cette réponse existe en haut->
"tout simplement garder dans une variable la dernière page que tu as chargé... .. ."
ma question comment garder dans une variable la dernière page que j'ai chargé
merci d'avance
désolé à la répétition de ce question.
swissikarim Messages postés 30 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 17 février 2011
8 sept. 2009 à 14:43
bonjour
merci beaucoup à votre claire réponse.
je trouve un autre probléme:aprés le chargement du contenu de formulaire dans le div un champ de type input qui affiche un calendrier ne marche pas et avant de fait cette fonction d'ajax
il est fonctionné dans son propre page qui contien le formulaire
et sa le code:
<link rel="stylesheet" type="text/css" href="../Scripts/src/css/jscal2.css" />
<link rel="stylesheet" type="text/css" href="../Scripts/src/css/reduce-spacing.css" />
<link rel="stylesheet" type="text/css" href="../Scripts/src/css/border-radius.css" />
<script src="../Scripts/src/js/jscal2.js"></script>
<script src="../Scripts/src/js/lang/fr.js"></script>

<script type="text/javascript">//<![CDATA[

var cal = Calendar.setup({
onSelect: function(cal) { cal.hide() }
});
cal.manageFields("datec", "datec", "%d/%m/%Y");

//]]></script>
merci beaucoup pour votre prochaine réponse
désolé encore
jeffbretelle Messages postés 2 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 8 septembre 2009
8 sept. 2009 à 13:54
bonjour,

Effectivement, quand tu fait 'retour page précédente', il retourne à la page d'acceuil car le chargement de contenu dans le div n'est pas considéré comme une nouvelle page.

En ce qui concerne les caractères spéciaux : utilise par exemple "è" au lieu de "è".
Tous les caractères spéciaux : http://alexandre.alapetite.fr/doc-alex/alx_special.html

BAT
swissikarim Messages postés 30 Date d'inscription jeudi 27 août 2009 Statut Membre Dernière intervention 17 février 2011
8 sept. 2009 à 12:54
bonjour
je suis débutant pour la création de application web j'utilise
la fonction mais lorsque je met[# test]
lorsque j'ouvre la page désiré il y a un problème d'affichage des caractétres spéciaux é par ? par exemple.
aussi lorsque je fait un retour à la page précédente retourne toujours au page d'accueil .
j'ai lu les précédentes pages mais je ne compris pas les solutions car je ne vois pas un exemple pour éclairer ces problémes.
merci beuacoup pour votre prochaine réponse
et encore désolé à la répétition des choses
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
11 avril 2009 à 11:21
en tout cas je te remercie beaucoup pour ton aide .

bon courage pour ton serveur .

@ +++
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
11 avril 2009 à 11:00
Bonjour,
Désolé de répondre aussi brièvement, mon serveur vient de me lacher, mais je te promet de revenir poster ici prochainement.
J'ai constaté pas mal de petites choses qu'on pourrait modifié mais surtout j'ai dis en bas de la page appelante, pas de la page appelée...
Et là si tu veux voir ta page raffraichir, tu dois ajouter à l'url toto=Math.round(Math.random()*10000) dans la fonction ajax...
En attendant que je revienne poster.
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
10 avril 2009 à 18:09
re et merci JLN , pour ton aide .

oui mon fichier shoutbox.php est à la racine du site , mais le fichier appelant non il est dans un dossier .

donc dan mon dossier appelant j ' ai mis le code en haut de la page sans rien changé

<script type="text/javascript">
function envoieRequete(url,id)
{
var xhr_object = null;
var position = id;

   if(window.XMLHttpRequest)  xhr_object = new XMLHttpRequest();

  else
    if (window.ActiveXObject)  xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); 

// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function(){

if ( xhr_object.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position).innerHTML = xhr_object.responseText;
}
}
// dans le cas du get
xhr_object.send(null);

}
</script>


puis mondiv avec l ' include :

<?php
if ($CURUSER["see_shoutbox"]=="yes")
include ("shoutbox.php");
?>



puis le lien pour raffraichir
[# raffraichir]


voilà le code simplifié pour mon fichier appelant .

maintenant mon fichier shoutbox.php
[code}
<?php
if ($CURUSER["see_shoutbox"]=="yes") {

if (isset($_GET['sent'])) {
if($_GET["sent"]=="yes") {
$user=$CURUSER["username"];
$date=time();
$message=trim($_GET["shbox_text"]);

mysql_query("INSERT INTO shoutbox (msgid, userid, user, date, message) VALUES ('', ".sqlesc($userid).", ".sqlesc($user).", ".$date.", ".sqlesc($message).")") or sqlerr(__FILE__, __LINE__);
}
}

$res = mysql_query("SELECT msgid, userid, message, date FROM shoutbox ORDER BY date DESC LIMIT 20") or sqlerr(__FILE__, __LINE__);
if (mysql_num_rows($res) == 0)
print("\n");

else {
$sp=" ";
while ($arr = mysql_fetch_assoc($res)) {

if ($CURUSER["mod_access"] == "yes")
$del="[del]";

$memberball = memberball2($arr["userid"],"");

print("".$sp.$memberball[0].$sp.strftime("%d.%m. %H:%M",$arr["date"]).$sp.$del.$sp.format_comment($arr["message"])."<hr></ br>\n");
}
}
?>
<script language='text/JavaScript1.2'>
timer = setInterval('envoieRequete("shoutbox.php","page")', 10000);
</script>
<?php
}
?>
/code

attention le code n ' est pas complet pour ne pas trop surcharger je pense en avoir mi suffisament.

j ' ai essayé comme tu m ' as dis dans le fichier shoutbox.php tout en bas , mais , ça ne fonctionne toujours pas .
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
10 avril 2009 à 13:31
iznobe2601 tu dois placer ca dans la page qui inclus la div et ce tout en bas juste avant car l'appelle se fait une fois tout affiché.
et ton fichier shoutbox.php est-il à la racine du site ?
Moi je fais de la domotique et ma page (celle qui apporte de nouveau éléments) se raffraichit comme cela et je n'ai pas de soucis.
Met un peu plus de code pour que l'on puisse t'aider...

@+ JLN
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
10 avril 2009 à 13:25
dois je placer ce code dans l ' include ou dans la page appelante ?
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
10 avril 2009 à 13:20
apres reflexion la nuit porte conseil ,surtout au gros debutant comme moi ,

je me suis dis qu ' il etait plus judicieux de placer ça dans mon code :

<script language='text/JavaScript1.2'>
timer = setInterval('envoieRequete("shoutbox.php","page");', 10000);
</script>

par contre ça ne marche pas non plus un peu d ' aide serait bienvenue , s ' il vous plait

ça me parait compliqué , mais puissant comme script , joli à voir et economique en bande passante !!!!

j ' ai vraiment besoin de faire ce rafraichissement auto
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
10 avril 2009 à 08:40
bonjour jln , je viens d ' essayer le code que tu m ' as proposé , je l ' ai mis en lieu et place de l ' autre mais pas de raffraichissement auto .

im manque peut etre la partie utilistion de la fonction ???
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
10 avril 2009 à 06:42
Bonjour,
Moi j'utilise cela :

<script language='text/JavaScript1.2'>timer = setInterval('FonctionAjax("TOTO")', 10000);</script>

10000 est le temps en ms de l'interval du timer.
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
10 avril 2009 à 02:08
ç ' est bon j ' ai fermé de div et ça me creé un conflit maintenant ça marche nickel .

paar contre j ' ai un autre petit probleme , je voudrais faire un rafraichissement entirement automatique toutes les 30 minutes , avant j ' utilsais

echo "<meta http-equiv="refresh" content="1800; URL=mapage.php">";

mais maintenant je ne vois pas la solution , un autre script ajax peut etre à moins qu ' il y ait plus simple bien sur ??
iznobe2601 Messages postés 26 Date d'inscription vendredi 10 avril 2009 Statut Membre Dernière intervention 16 juillet 2009
10 avril 2009 à 01:07
bonjour à tous , je trouve cette source tres pratique par contre j ' ai un probleme , je voudrais faire disparaitre le div initial , j ' arrive à afficher le div mis à jour en lieu et place de l ' ancien corretement mais l ' ancien s ' affiche juste au dessous du nouveau j ' ai du loupé une etape ...

je precise que je suis tres novice en la matiere , pour cause c ' est le premier script ajax que j ' utilise .

je vous prierai donc d ' etre vraiment le plus clair possible svp .

merci d ' avance pour vos reponses et ce super site !!!
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
28 mars 2009 à 12:17
Coucou me revoilou !!!
Après avoir testé la manière pour moi la plus simple à mettre en oeuvre, j'ai juste ajouter à la suite des paramètres de l'url '&toto='+Math.round(Math.random()*10000) et tout fonctionne impec.
Merci beaucoup à vous tous, cela m'a bien aidé...
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
28 mars 2009 à 10:37
Ok, merci beaucoup pour toutes ces réponses, je m'en vais essayer tout ca...
@+ JLN
verbiagecasselaicouill Messages postés 18 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 27 mars 2009
27 mars 2009 à 22:26
Dernier truc:

Pour le deuxième truc remplacer SRC="chargacceuil.html" par SRC="nom de la page à charger par défault.html"
verbiagecasselaicouill Messages postés 18 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 27 mars 2009
27 mars 2009 à 22:24
erreur:

pour le bouton:

getElementById('nom de l'iframe')

L'id de l'iframe et l'attribut name doivent être les mêmes au cas ou je me planterai
verbiagecasselaicouill Messages postés 18 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 27 mars 2009
27 mars 2009 à 22:21
Pas compris.

J'avais réeussis à faire marcher correctemment le script mais il y a trop de pbl surtout pour le référencement et l'absence de bouton retour du navigateur

Une technique mieux:
Dans la page chargée:
__________________________________________________________________________________

Entre <head></head> :

<SCRIPT LANGUAGE="JavaScript">

if (parent.frames.length < 1)
{
document.location.href = 'page parent.html';
}
</SCRIPT>




_________________________________________________________________________________

dans body de la page parent:

Oups ça ne marche pas. Vous utilisez probablement un navigateur peu conventionnel.
__________________________________________________________________________________

Pour faire un lien bouton dans n'importe quelle page:



Toutes les pages seront chargées dans l'iframe. Même résultat sans les défaults que ce script pourris. Le problème de l'iframe pour l'indexation est résolu par le premier script de ce post.


Good luck. Tu peux reposter si tu en chie
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
27 mars 2009 à 19:10
En mettant une variable aléatoire à la fin de l'URL appelé, par exemple : script.php?var1=foo&var2=bar&sync=249582068

Où "249582068" est une valeur pouvant être un hashage de timestamp ou n'importe quelle valeur générée dynamiquement (et qui change donc à chaque création de l'URL).
cs_JLN Messages postés 371 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 17 juin 2013
27 mars 2009 à 16:55
Bonjour à tous,
J'essaye d'utiliser ce script, ca marche, mais une seule fois, après les pages affichées sont chargées depuis le cache, mais du coup ma requete sql ne 'execute qu'une fois. Ma question, comment obliger le navigateur à afficher toujours la page venant du serveur ??? Pour toutes réponses merci.
verbiagecasselaicouill Messages postés 18 Date d'inscription lundi 23 février 2009 Statut Membre Dernière intervention 27 mars 2009
23 févr. 2009 à 18:47
Un forum qui s'étalera sur 10 ans.

Difficile;

Pour mon compte ça marche pas sur IE 7 et pour le bouton retour...

Heeeeelp
cs_badoux Messages postés 137 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 16 décembre 2008
13 nov. 2008 à 07:43
Si je peux me permettre ce poste n'est plus d'actualité.

Aujourd'hui avec les librairies tel que prototype, jQuery, Mootools ou encore Scriptaculous, on peut très facilement mettre en place de l'ajax, dont des requêtes XMLHttpRequest. Qui plus est, c'est évidemment compatible par defaut full-browser et on peut y ajuster les paramètres que l'on souhaite très simplement.

Je vous laisse la doc, si vous souhaiter vous y mettre. Je vous recommande l'utilisation de jQuery qui est pour moi, la plus grande lib et la plus répandue sur la toile, qui plus est c'est la plus légère au niveau du poids.

http://docs.jquery.com/Ajax

Cordialement,
Badoux Christophe
Dindonneau Messages postés 1 Date d'inscription vendredi 2 mai 2008 Statut Membre Dernière intervention 12 novembre 2008
12 nov. 2008 à 21:54
tres bonne source ...
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
20 sept. 2008 à 14:57
Petite erreur : le deuxième "xhr_object1.readyState" est bien un "xhr_object2.readyState" ^^
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
20 sept. 2008 à 14:55
function envoieRequete(url1, id1, url2, id2)
{
var xhr_object1 = null;
var position1 = id1;

var xhr_object2 = null;
var position2 = id2;


if(window.XMLHttpRequest) {
xhr_object1 = new XMLHttpRequest();
xhr_object2 = new XMLHttpRequest();
} else
if (window.ActiveXObject) {
xhr_object1 = new ActiveXObject("Microsoft.XMLHTTP");
xhr_object2 = new ActiveXObject("Microsoft.XMLHTTP");


// On ouvre la **premiere** requete vers la page désirée
xhr_object1.open("GET", url1, true);

xhr_object1.onreadystatechange = function(){
if ( xhr_object1.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position1).innerHTML = xhr_object1.responseText;
}
}
// dans le cas du get
xhr_object1.send(null);

// On ouvre la **deuxieme** requete vers la page désirée
xhr_object2.open("GET", url2, true);

xhr_object2.onreadystatechange = function(){
if ( xhr_object1.readyState == 4 )
{
// j'affiche dans la DIV spécifiées le contenu retourné par le fichier
document.getElementById(position2).innerHTML = xhr_object2.responseText;
}
}
// dans le cas du get
xhr_object2.send(null);
__________________________________________________

Là j'ai dupliqué tout le code, mais tu peux réutiliser le même xhr_object pour les deux requêtes. Problème : ce ne sont pas des appels simultanés et il faut prévoir le fait que la première puisse échouer.
nicomartus Messages postés 2 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 19 septembre 2008
19 sept. 2008 à 14:15
Je comprends le principe mais je suis vraiment au tout début et de plus je ne sais pas trop quoi mettre dans mon lien. Peux-tu me montrer un exemple, svp. Je comprends mieux quand je vois les choses.
Merci.
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
19 sept. 2008 à 14:01
Il faut arranger le code pour que deux actions se fassent.

Voici une action de modification du contenu :
document.getElementById("div_qui_existe").innerHTML = xhr_object.responseText;

Il suffit d'en mettre une autre qui modifie un autre DIV, et éventuellement de dupliquer l'objet XHR à partir duquel il récupère le contenu à mettre.
nicomartus Messages postés 2 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 19 septembre 2008
19 sept. 2008 à 12:49
Bonjour,
je débute tout juste l'Ajax. J'ai testé ce code qui fonctionne bien, du coup je voudrais savoir comment faire pour qu'un seul lien charge deux pages dans des div différents ? En fait ça doit recharger le div ou se trouve le lien, plus un div dans la page.

Merci d'avance pour votre aide.
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
27 juil. 2008 à 13:50
AJAX ne fonctionne pas sur des domaines multiples. En fait, il n'est pas possible d'interroger un une adresse qui ne fait pas partie du domaine à partir duquel on fait la demande.

Dans ton cas, l'adresse « file:\\mon_repertoire » ne fait pas partie du même domaine que 127.0.0.1 ou localhost.
jmeunier Messages postés 86 Date d'inscription mardi 10 septembre 2002 Statut Membre Dernière intervention 17 mai 2013
27 juil. 2008 à 11:42
bonjour,

je n'arrive pas à faire "tourner" cette page en local.
j'appelle la page stockée sur mon disque.
IE la charge.
quand je clique sur : test ou test2

-> accès refusé

quand je mets la page dans mon serveur local(127.0.0.1) ca fonctionne car il est en "site de confiance".
J'aimerai que cela fonctionne en appelant la page directement de mon disque ...
j'ai beau mettre "file:\\mon_repertoire dans site de confiance, il ne le prend pas...

Merci de vos conseils
leod38 Messages postés 4 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 janvier 2010
22 mai 2008 à 13:42
bien le bonjour !

je te félicite pour se script , c'est exactement ce que je cherchai et ca marche bien !

néanmoins je suis débutant en Ajax et du coup d'autres petits soucis apparaissent
je voudrai avoir votre avis pour les régler :

- 1 les caractères spéciaux : il suffit de codé en propre en html (réglé)

- 2 vous parlez de mettre la page précédente dans une variable pour ne pas bloquer le bouton précédent

comment fait on plus précisément ? je ne vois pas !
sinon merci de toutes vos réponses elle m'ont bien été utile jusqu'ici
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
14 juin 2007 à 17:31
Normalement la réponse est quelque part dans les commentaire précédants... .. !

C'est une question d'encodage des données envoyées... .. .

@ tchaOo°
jeffbretelle Messages postés 2 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 8 septembre 2009
14 juin 2007 à 16:38
Bonjour tout le monde.

Merci beaucoup pour ce script qui fonctionne pas mal du tout.

J'ai malgre tout un probleme : les caractère spéciaux ne passent pas (caractères avec accents) et les js non plus.

Je m'explique :

Dans mon index.php, j'ai

---------------index.php------------------------
<html>
<head>
<title>blabla</title>
<link href="style.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<script type='text/javascript' language='javascript'>
function httpRequest(div,file){
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

var div = div;
var file = file;

xhr_object.open("POST", file, true);

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4){
//alert(file);
document.getElementById(div).innerHTML = xhr_object.responseText;
}
}
xhr_object.send(null);
}
</script>



<?php include('musique/lecteur.php');?>


<?php include('menu.php');?>






<?php include('pied.php');?>




</html>
----------------------------------------------



Et dans mon accueil.php j'ai :

----------------accueil.php-------------------
<?php
du code pour récupérer des valeurs dans une BD. ce code fonctionne.
?>

</script>
..[du code pour afficher en défilement les valeurs récupérées ci-dessus]..
<script language=\"JavaScript1.2\">

..[du texte dont des caractère é à è ê etc]..

----------------------------------------------

Et le résultat que j'obtiens au chargement de la page, c'est que accueil.php se charge bien dans le div "cadre" de index.php mais le texte défilant n'est pas présent et les caractères spéciaux (+ les 2 caratères suivants) sont remplacés par "?".

Pour faire un essai, j'ai fait un
<?php include('accueil.php'); ?>
et cela fonctionne sans probleme.

Je ne sais pas trop à quoi ca pourrait etre dû. Est-ce que quelqu'un pourrait m'aider ??
Merci d'avance.


Pour info, j'utilise cette fonction et non pas des includes parce que j'ai un menu en flash et que je met donc le code suivant sur mon bouton 'accueil'. (et semblable pour les autres boutons...)

on (release){
getURL('javascript:httpRequest('cadre','accueil.php')');
}

Je ne veux pas recharger toute la page car elle contient un div dans lequel j'ai mis un mini-lecteur de musique (en flash aussi) et je ne veux pas que la chanson redemarre dès que je change de page.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
30 janv. 2007 à 16:10
Bah en terme d'accessibilité les deux sont bof bof... pareil en ce qui concerne la portabilité (compatibilité) avec le client... en terme de référencement les (i)frames sont meilleur il me semble et en terme de standard mieux vaut utiliser les xmlhttprequest... .. .

Tout dépend de ce que tu veux... comment tu veux le déployer... quel public tu veux toucher et quels contraintes peuvent découler de ce même public cible... et si tu veux être au norme W3C... .. .

@ tchaOo°
xamxeladog Messages postés 5 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 30 janvier 2007
30 janv. 2007 à 15:59
euh.. je vais pt'et passer pour un naabo mais bon tant pis, j'assume ^^

"Euh... les (i)frames... les language serveur... lOoOL... .. . :oD
Bon ok je sors... .. . :oP
@ tchaOo°"

Bon, j'ai vu que les frames c'est pas bien et patati patata...soit,oki... je développe actuellement pas mal avec les iframes inclues dans les div, exemple :





Me demandant si les iframes au final, c'eest pas un peu comme les frames, et là je vois le XMLHTTPRequest! Ô Miracle!! cela existe donc?! Bon je commence à me renseigner, et je tombe sur votre page... Euh.... C'est bien ou c'est pas bien?

Et ma solution, c'est bien ou c'est pas bien?

Voilà, merci d'avance pour vos réponses ^^
amezghal Messages postés 385 Date d'inscription lundi 27 février 2006 Statut Membre Dernière intervention 21 août 2015 5
11 janv. 2007 à 12:19
salut
pour les pages contenant des formulaires avec la methode "post" ou "get" ya eu des problemes,
try to find a solution ;)
cs_revolt Messages postés 68 Date d'inscription samedi 5 mai 2001 Statut Membre Dernière intervention 15 mars 2015
4 janv. 2007 à 14:08
Bravo pour cette source !!
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
23 nov. 2006 à 11:49
Re encore moi comment enlevé # cela a la fin de l'url please
toutphp Messages postés 107 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 5 mai 2010
20 nov. 2006 à 17:51
@speedylol : Essai dans un premier temps de voir si mon exemple fonctionne seul (uniquement avec les lignes que j'ai écrites) comme je l'ai marqué, si il fonctionne dans ce cas on passera en message privé pour éviter de polluer ces commentaires (ou bien par mail).
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
20 nov. 2006 à 17:43
voila ce ce que j'ai fait
<?php
echo'
':
bla
bla
bla
bla
bla


echo"<center><form action=\"add_annonce.php\" method=\"post\" enctype=\"multipart/form-data\" style='margin-top: 0px; margin-bottom: 0px' name='cat' onSubmit='return(VerifForm(this))'>,

bla
bla
bla
bla
* Champs obligatoires,
</form>
</center>";
}
echo"
"

Et je centre tous dans tete.php site
toutphp Messages postés 107 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 5 mai 2010
20 nov. 2006 à 16:50
As-tu bien mis le code PHP de generation.php entre les balises <?php ... ?> car cela fonctionne chez moi. Les as-tu bien mis dans les mêmes repertoires ?
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
20 nov. 2006 à 16:08
je viens de tester toutphp le script, cela ne fonction pas

voila l'erreur
Found
the document has moved here
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
20 nov. 2006 à 15:44
Euh... les (i)frames... les language serveur... lOoOL... .. . :oD

Bon ok je sors... .. . :oP

@ tchaOo°
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
20 nov. 2006 à 15:41
Pourquoi? il existe quelque chose de plus dynamique et qui fonction aussi bien???
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
20 nov. 2006 à 13:39
+1

cf. DHTML
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
20 nov. 2006 à 13:36
Oui je sais... mais quel interet de revenir dessus... .. .

Mais bon puisque c'est fait (;o))... je pense que tout dépend de la définition du mot dynamique... dynamique ne veux pas forcement dire généré dynamiquement... ainsi on peut dire que javascript par le biais de la gestion des evenement peux rendre plus dynamique une page bien que cette dernière soit statique... .. . ;o)

@ tchaOo°
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
20 nov. 2006 à 12:56
c'était un débat qu'on avait eu plus haut : "Permet d'enlever le lien et de rendre la page plus dynamique ..."
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
20 nov. 2006 à 12:21
Quel est l'interet de ton commentaire coucou... .. ?

Pour le reste si la génération en tache de fond de la réponse est dynamique on peut considérer que le contenu est dynamique... tout dépend de quel dynamise tu parle... celui de la réponse ou celui de la page visualisée... .. .

Pour le reste c'est un détail dont on se fout un peu... non... ton commentaire n'a pas vraiment lieu d'être... .. .

@ tchaOo°
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
20 nov. 2006 à 09:32
je persiste, c'est pas dynamique... c'est statique, même si ça fait joli...
toutphp Messages postés 107 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 5 mai 2010
20 nov. 2006 à 09:18
Voilà un exemple d'utilisation :

--------- Mon fichier index.php -------------

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
 <title>cyril-test</title>
 
 <script type="text/javascript">
 function envoieRequete(url,id)
 {
     var xhr_object = null;
     var position = id;
      if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
      else
      if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
  
     // On ouvre la requete vers la page désirée
     xhr_object.open("GET", url, true);
     xhr_object.onreadystatechange = function(){
     if ( xhr_object.readyState == 4 )
     {
         // j'affiche dans la DIV spécifiées le contenu retourné par le fichier
         document.getElementById(position).innerHTML = xhr_object.responseText;
     }
     }
     // dans le cas du get
     xhr_object.send(null);
  
 }
</script>
</head>


  
 

  

</html>

------------- Fin fichier index.php -----------

------------- Début fichier generation.php -----------

echo 'Réussite de la génération du fichier generation.php';

------------- Fin fichier generation.php -----------


En fait tout ce qui sera généré dans le fichier generation.php sera mis à la place du contenu du div 'cibleDeLaFonction'
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
20 nov. 2006 à 09:00
Merci de ta réponse
ce que je veux comment cela ?? car je suis pas très spécialiste du javascript ??? d'aillieur je devrais m'interesser plus a cela ???
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
19 nov. 2006 à 21:17
<form action="javascript:void(0)" onsubmit="javascript:alert(this.fichier.value)">


</form>

Dans le onSubmit tu mets ce que tu veux (après "javascript:")
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
19 nov. 2006 à 20:38
tu note quoi stp???
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
19 nov. 2006 à 20:31
plus rapide sans clignotement, GRONOK tu place sa a la fin dans le submit du formailre je suppose.

merci
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
19 nov. 2006 à 19:37
Je sais pas...
gdu3744 Messages postés 5 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 19 novembre 2006
19 nov. 2006 à 18:16
quelle est la plus value de cette methode plutot qu'a utiliser des frames ?
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
19 nov. 2006 à 15:14
Avec un formulaire tu peux ne mettre aucune action et mettre onsubmit="envoieRequete(...)". Comme ça c'est ce qu'il y a dans onSubmit qui va s'exécuter et non plus ce qu'il y a dans action.
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
19 nov. 2006 à 10:27
bonjour cela fonction super bien ce script une seule question dans un <form action='truc.php' >
comment faire pour utiliser cette même fonction merci de vos réponse???
speedylol Messages postés 228 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 27 novembre 2013
13 nov. 2006 à 15:12
bonjour cela fonction aussi avec une pagination en fesant l'appel de la fonction merci de votre réponse.


comme cela svp???

exemple:

[#
précédent]
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
23 août 2006 à 15:53
@ kbalevil... bah non y a pas de solution miracle c'est une des limite d'ajax... la plus contraignante à mon gout... .. .

2 solution... gérer en fonction du module comme tu l'a dit avec des if, un switch ou un constructeur prenant le nom du module en paramètre... ou alors faire renvoyer par le serveur un tableau javascript contenant une entrée avec le contenu html et une entrée avec le code javascript à executer... l'un dans l'autre c'est un peu du bricolage... .. .

@ tchaOo°
nmdeal2 Messages postés 9 Date d'inscription dimanche 20 août 2006 Statut Membre Dernière intervention 5 août 2008
22 août 2006 à 23:17
Très utile pour les affiliations.

Merci
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
8 août 2006 à 09:43
Merci de cette précision.

J'ai contourné le problème d'une façon sensiblement différente, lorsque la page est affichée, j'ai fais appel à un constructeur dans le fichier JS du contrôle (que j'appelle dans le index.php), mais là, je me doute que si j'ai plusieurs controles avec plusieurs constructeurs donc, je vais avoir un soucis, donc y a t il moyen d'appeler un constructeur en particulier (sans avoir recours au if, parceque je compte avoir pas mal de controles), et sans passer de paramètre genre : constructeur('nom du contrôle') + un test dans chaque constructeur ?

Merci en tout cas pour ton aide KANKRELUNE

gdu3744 : j'ai eu aussi du mal avec les chemins relatifs au déébut, une vraie galère, maintenant ça va. Merci de ton aide.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
7 août 2006 à 19:41
en fait le code javascript est chargé en même temps que la page et ne l'est plus (hormis si tu utilise eval)


Oups c'est pas très clair... .. .

en fait le code javascript est chargé en même temps que la page et est interprété (déclaration des fonction, etc) ensuite il ne l'est plus... hormis si tu utilise eval... .. .

@ tchaOo°
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
7 août 2006 à 19:39
Ah ok... j'avais pas compris... arrete moi si je me trompe mais tom problème n'est pas au niveau des templates mais au niveau du code javascript contenu dans la réponse de tes XMLHTTPRequest... c'est normal... le code javascript contenu dans les XMLHTTPRequest n'est pas interprété... en fait le code javascript est chargé en même temps que la page et ne l'est plus (hormis si tu utilise eval)... .. .

deux alternatives s'offrent à toi dans ce cas... charger toute tes fonctions javascript en même temps que la page ou alors lancer deux requetes ajax... l'une retournant le code html pour la mise à jour de ta page l'autre retournant du code javascript à passer dans un eval()... une troisième option est possible bien que plus crade c'est de mettre une balise script avec un id dans ton index et de changer dynamiquement le fichier cible en fonction de la page chargée via Ajax... .. .

@ tchaOo°
gdu3744 Messages postés 5 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 19 novembre 2006
7 août 2006 à 18:40
j'ai eu egalement un probleme de chemin dans un autre cas de figure (transfert d'info entre un iframe et un div) ou le texte et les images du iframe (bien affichés) etait mal transferés (pas d'images)et j'ai fini par comprendre (avant de devenir fou...) qu'il fallait un "./" au lieu d'un "../" pour les references d'images. Du coup je ne voyais plus les images dans mon Iframe (mais pas d'importance) et les voyait dans mon div (ce que je voulais).
peut etre que ca peut te mettre sur la piste.

Bonjour de Montreal !
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
7 août 2006 à 18:05
Mon architecture est comme suit :
pour chaque controle, j'ai un repertoire dans lequel j'ai 1 PHP, 1 CSS, 1 JS, 1 TPL
Pour la page principale, j'ai 1 PHP, 1 JS

Donc, j'ai un fichier index.php qui est la page principale, sur cette page je place des balises qui sont des références à mes controles (elles doivent être remplacées par mes controles), à la fin de cette page, je lance la fonction Javascript de remplacement de ces balises.
Dans cette fonction, je fais appel au fichier PHP du contrôle concerné, ce fichier va implémenter le template et finalement l'envoyer à la fonction javascript en retour par le XMLHTTPRequest.
Bon donc, j'ai réussi à afficher mon contrôle (déplacement du référencement de l'objet template dans le fichier PHP du contrôle), mais l'initialisation des variables contenues dans le fichier javascript du controle ne sont pas appellées, je m'explique, lorsque le contrôle est affiché, je le place à un endroit donné, et bien malgré l'appel à la fonction javascript à la fin du template, la fonction n'est pas exécutée, d'où mon soucis, le CSS référencé dans le fichier index.php est bien pris en compte, mais pas le fichier JS spécifique au contrôle, et si je déplace le référencement de ce fichier JS dans le fichier PHP du controle, pareil.
Donc je pense qu'il peut y avoir un soucis de chemin, mais je n'ai pas d'erreur de chargement.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
7 août 2006 à 17:19
Je charge 'Index.php', il contient la balise à remplacer, les références au template, ainsi que la création de l'objet.
De là, je lance la fonction javascript de remplacement.
J'appelle la page PHP du contrôle, il là il plante sur l'enrichissement de l'objet.


J'ais du mal à comprendre la fdaçon dont tu procede... qu'est ce que tu appel références au template dans ton index.php... .. ?

le chemin doit il faire référence au fichier de base ('Index.php') ou au fichier PHP du controle ?


De quel chemin tu parle ? celui de ta requete ajax... .. ?

@ tchaOo°
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
7 août 2006 à 15:46
Ben oui, mais malheureusement ça ne fonctionne pas.
Voici le détail :
Je charge 'Index.php', il contient la balise à remplacer, les références au template, ainsi que la création de l'objet.
De là, je lance la fonction javascript de remplacement.
J'appelle la page PHP du contrôle, il là il plante sur l'enrichissement de l'objet.

J'ai regardé dans mes déclarations, je vois rien.
le chemin doit il faire référence au fichier de base ('Index.php') ou au fichier PHP du controle ?

Merci
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
7 août 2006 à 15:09
Je vois pas pourquoi ce système ne serait pas compatible avec l'utilisation des templates... la gestion des templates se fait coté serveur... la requete Ajax se fait coté client... rien à voir... si le fichier php cible fonctionne correctement l'erreur provient surement de la requete ajax et de son traitement... .. .

@ tchaOo°
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
7 août 2006 à 13:52
Bon, j'ai une piste, voilà le cas complet :

J'ai créé un widget utilisant 4 fichiers (PHP, TPL, CSS, JS), le style de template utilisé est Smarty. Tout fonctionne très correctement si j'appelle le fichier PHP référence directement. Si par contre je met une balise qui doit être remplacée par cette feuille en utilisant cette fonction, j'ai une erreur. J'ai donc essayé de charger une feuille contenant uniquement des éléments HMTL, et là ça semble fonctionner correctement, il m'apparaît donc clairement que le système de template n'est pas compatible avec cette fonction. Si quelqu'un connait un moyen de contourner ce problème en gardant ma structure actuelle, je suis preneur.

Merci
kbalevil Messages postés 23 Date d'inscription dimanche 17 novembre 2002 Statut Membre Dernière intervention 11 août 2006
7 août 2006 à 12:56
Salut à tous,

J'ai un petit soucis, j'essai de charger des contrôles (Type Dojo) avec cette méthode, mais il semble que l'utilisation de template ne soit pas possible ! Vous confirmez ?

Merci
ns_deux Messages postés 10 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 29 août 2006 1
6 août 2006 à 18:01
Là, tu as le code brut sans les entetes et ca marche pas alors je pense pas que ca vienne des entetes.
Qq'un arrive à faire fonctionner un menu deroulant dynamique comme le miens? si oui comment a-t-il fait?
Merci d'avance.
gdu3744 Messages postés 5 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 19 novembre 2006
6 août 2006 à 15:01
A tout hasard , c'est peut etre lié à ton entête HTML (la premiere ligne du fichier).
ns_deux Messages postés 10 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 29 août 2006 1
25 juil. 2006 à 20:50
Bonjour à vous,
j'ai un probleme sur cette page php. Il m'est impossible d'afficher mon resultat il s'efface aussitot. QQun saurait pourquoi?
page principale.php
<script type= "text/javascript">
function recharge(url,id)
{
var xhr_object = null;
var position = id;
if(window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
else
if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function(){
if (document.getElementById(position) && xhr_object)
{
if (xhr_object.readyState == 4)
{
if (xhr_object.status 200 || xhr_object.status 304)
document.getElementById(position).innerHTML = xhr_object.responseText;
else
document.getElementById(position).innerHTML = 'Error ' + xhr_object.status + ' : ' + xhr_object.statusText;
}
else document.getElementById(position).innerHTML = 'Chargement en cours... veuillez patienter... .. .';

}
}
// dans le cas du get
xhr_object.send(null);

}
</script>



<tr>
<td>



O.A.M :



<select name ='oam' id='oam' style='width:240' >
<?php
echo "<option value=''></option>";
require("connect_atelier.php");
$req = 'SELECT DISTINCT oam FROM oam ';
$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row['oam']."'>".$row['oam']."</option>";
}
echo "</select>";

?>


</td>
<td>

-------------------------------------------------------------

et ma requete_oam.php

<?php

echo "<select name='oam' id='oam' style='width:240'>";
echo "<option value=''></option>";
require("connect_atelier.php");
$req = 'SELECT DISTINCT oam FROM oam ';
$res = mysql_query($req,$connect) or die ('Erreur : '.mysql_error() );
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row['oam']."'>".$row['oam']."</option>";
}
echo "</select>";



?>
---------------------------------------------------------
Tout marche bien a part le fait que mon resultat s'efface aussi sec. i je maintien le click de souris j'ai mais valeur mais des que je relache ca s'efface bizarre. Je comprends rien
Merci si vous pouvez m'aider
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
13 juil. 2006 à 05:01
Tu peux faire les deux avec les XMLHttpRequest... la différence se situe au niveau de l'attribut de réponse... .. .

monObject.responseText => le format texte, html...

monObject.responseXML => le format xml...

@ tchaOo°
gdu3744 Messages postés 5 Date d'inscription samedi 12 juin 2004 Statut Membre Dernière intervention 19 novembre 2006
13 juil. 2006 à 04:20
Super , exactement ce que je cherchais. Merci pour ce script.
J'avais trouvé un peu la meme chose mais pour rapatrier du XML mais pas une page html complete.
Cool ! ca fait 2h que je cherche...(vous avez dit productivité...;o))
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
12 juil. 2006 à 14:35
oui et si on veut revenir deux page en arriere?
sinon jpense utilisé un framework ou sinon je viens de tomber sur RSH (Really Simple Historic)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
12 juil. 2006 à 13:13
tout simplement garder dans une variable la dernière page que tu as chargé... .. .


@ tchaOo°
cs_LordBob Messages postés 2865 Date d'inscription samedi 2 novembre 2002 Statut Membre Dernière intervention 11 mai 2009 9
12 juil. 2006 à 11:47
salut,
j'utilise la meme chose dans mon site internet. sauf que en utilisant cette solution, il est impossible de faire un "retour arriere" d'aller à la "page précédente" en cliquant dans le bouton du navigateur.
je voulais savoir si quelqu'un avait une solution?
merci par avance.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
20 juin 2006 à 16:27
"
<?php include($_GET['pageID']); ?>
"

jolie faille...
sur http://coucou747.hopto.org catégorie php, il y a un lien vers une page qui explique différentes failles...
Kikoleskargo Messages postés 1 Date d'inscription mardi 20 juin 2006 Statut Membre Dernière intervention 20 juin 2006
20 juin 2006 à 16:21
et ya moyen de unload ces pages en div ? :D
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
3 juin 2006 à 15:44
Tous les caractères spéciaux... .. .

@ tchaOo°
williamprotti Messages postés 44 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 21 mai 2007
3 juin 2006 à 12:48
Merci Kankrelune!, mais quand tu dis "(pense à échapper les caractères spéciaux)" tu veus dire les accents? Parce que les accents "éàè" etc.. aparaissent sous forme "?"
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
2 juin 2006 à 23:52
On lit les commentaires... c'est marqué... .. !

xhr_object.open("POST", file, true);

xhr_object.onreadystatechange = ... .. .

xhr_object.send("mavar1=pwet&mavar2=plop&mavar3=blurp..."); (pense à échapper les caractères spéciaux)

@ tchaOo°
williamprotti Messages postés 44 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 21 mai 2007
2 juin 2006 à 23:05
Bonjour! On fait comment pour utiliser le même script, mais pour la méthode POST d'un formulaire?? Merci!
hvb Messages postés 939 Date d'inscription vendredi 25 octobre 2002 Statut Membre Dernière intervention 27 janvier 2009 3
1 juin 2006 à 14:13
ça n'apporte rien de plus que le tutos de toutjavascript, qui est mis en avant sur codes-sources (ici et sur phphcs) depuis plusieurs mois déja...

Et pour le problème de compatibilité avec IE, dans IE7 l'objet xmlhttprequest sera integré en NATIF.

Et pour finir, "les navigateurs qui bloquent l'accés a des sites externe" c'est un parametre dans les options... dans IE c'est "accés aux sources de données sur plusieurs domaines" je crois... je n'ai jamais tenté de l'activer, mais vu que lors d'une execution locale ça marche... on peut en deduire que...


=)
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
29 mai 2006 à 20:44
Salut josh666... actuellement j'utilise un timeout comme ça ça déclenche la methode abord si ça traine trop... .. .

@ tchaOo°
josh666 Messages postés 81 Date d'inscription mercredi 7 juillet 2004 Statut Membre Dernière intervention 1 octobre 2007 1
29 mai 2006 à 20:19
Bonjour à tous, je tien a dire que cette focntione est très utilise pour les modules d'admistration de site... sa rend la gestion plsu fluide et ressemble plsu a une vrai application.

Ensuite Pour : kankrelune :

j'ai peut-etre une idée pour toi, est-ce que tu as esasyer d'ajouter dans ta focniton qui s'occupe de gérer le XMLHttpRequest d'initailiser une varialbe globale (ex: var enTraitement true) et lors de l'appel de la focntione a nouveau tu vérifi si cette variable est egal a true si oui tu arrete l'éxécutin de la fonction... bine sur il faut que lors que tu effectue la vérification de (xhr_object.readyState 4) tu affecte false a ta variable..

Si une idée comme sa, parce que j'ai jamais eu le problème donc tu parle sur mes applications..

Sur ce ++
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
16 mai 2006 à 01:49
Salut... si je peut ajouter mon grain de sel... .. .

Concernant l'instanciation de l'objet moi je fais comme suit...

var xhr_object = false;

if (window.XMLHttpRequest)
{
xhr_object = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
var ieversions = ['Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];

for(var i=0; !xhr_object && i<ieversions.length; i++)
{
try
{
xhr_object = new ActiveXObject(ieversions[i]);
}
catch(e)
{
xhr_object = false;
}
}
}


Concernant la requete il peut être interressant de gérer les erreurs retournées... dans ce cas...


if (document.getElementById(position) && xhr_object)
{
if (xhr_object.readyState == 4)
{
if (xhr_object.status 200 || xhr_object.status 304)
document.getElementById(position).innerHTML = xhr_object.responseText;
else
document.getElementById(position).innerHTML = 'Error ' + xhr_object.status + ' : ' + xhr_object.statusText;
}
else document.getElementById(position).innerHTML = 'Chargement en cours... veuillez patienter... .. .';

}

Reste un problème... principalement avec firefox... si une requete est envoyée alors que la précédente n'a pas fini d'être traitée (ex : rafraichissement d'un chat) et bien cela crée un belle erreur js... il faut alors réussir à controller l'état d'avancement de la requete en cours et si elle traine utiliser la fonction xhr_object.abord()... et là je sèche un peu... .. .

@ tchaOo°
szwr Messages postés 6 Date d'inscription jeudi 11 avril 2002 Statut Membre Dernière intervention 21 décembre 2006
9 mai 2006 à 08:57
En ce qui concerne la sécurité du contenu affiché, tout doit se faire du côté serveur (PHP, ASP, CGI).
XMLHttpRequest permet cependant la construction de pages complexes et modulaires en ménageant la bande passante.
jmecodol Messages postés 16 Date d'inscription jeudi 19 janvier 2006 Statut Membre Dernière intervention 28 août 2006
8 mai 2006 à 19:46
je trouve ca bluffant, couplé a un proxy maison, c'est 100 fois plus agréable que des liens basiques, chapeau !!!
c'est super éfficace mais le top, ca serai de rajuter un éffet de transition (du style powerpoint, j'ai vu sa un jour sur un site web,mais j'ai oublié l'URL) .
ca change la vie aux utilisateur basiques (chef de service informatique,non initiés a la programmation et habitués a la patience) .
grand luxe !
cs_badoux Messages postés 137 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 16 décembre 2008
8 mai 2006 à 12:45
c'est pas tout a fais ca !

Tu peux installer des frameworks (lib) AJAX, pour te faciliter la tâche!

A++
cs_badoux Messages postés 137 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 16 décembre 2008
8 mai 2006 à 12:39
bonjour,

Il est vrai que le métier de devellopeur et rude, prog>debog>prog>debog... voila une journée d'un programmeur.
C'est particulièrement IE6 qui pose problème !
Mais patience Internet Explorer accéptera mieu le code dans un avenir très proche :-)!

On espère que d'ici quelques années tout les naviguateur ce seront mis au W3C :-)


en attendant ce jour, voila un exemple qui roule à merveille ! :-)

function httpRequest(div,file){
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

var div = div;
var file = file;

xhr_object.open("POST", file, true);

xhr_object.onreadystatechange = function() {
if(xhr_object.readyState == 4){
//alert(file);
document.getElementById(div).innerHTML = xhr_object.responseText;
}
}
xhr_object.send(null);
}

a plus !
lordbdp Messages postés 33 Date d'inscription dimanche 9 octobre 2005 Statut Membre Dernière intervention 10 avril 2020
8 mai 2006 à 12:37
J'ai cru comprendre qu'il fallait installer AJAX sur le serveur pour faire tourner ses fonctionnalités. C'est faux ?
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
8 mai 2006 à 12:05
Il y a juste l'initialisation de l'objet qui est différente pour chaque navigateur. On trouve des exemples tout fais sur Google.

Après pour appeler les méthodes c'est pareil (l'objet c'est le même).
williamprotti Messages postés 44 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 21 mai 2007
8 mai 2006 à 12:01
Bon moi je vais faire un truc sur mon site, je vais obliger a utiliser FireFox! Et ils devraient ce mettre au clair entre eux.... Parce que programmer 10 fois différament pour chaque navigateur c'est chiant!
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
7 mai 2006 à 21:02
iop arto
merci pour cette précision.

Have Fun ;)
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
7 mai 2006 à 20:28
APXA -> Plusieurs naviagteurs retournent cette erreur, car par question de sécurité tu ne peux faire une requête sur un autre site.

Ex: Si ton script XMLHttpRequest est sur un server "X" il peut faire des requêtes sur le site X, mais pas sur le "Y" ou "Z".

Quand je dévellope des scripts JS/PHP du genre Chat, c'est assez pratique, mais point de vue compatibilité c'est pas super et même difficile, car certains navigateurs supportent mal cette fonction.
apxa Messages postés 188 Date d'inscription mercredi 15 mai 2002 Statut Membre Dernière intervention 25 avril 2009
7 mai 2006 à 15:47
Iop all,
j'ai pas l'impression qu'au niveau compatibilite ce soit top (FF retourne xhr_object.open operation non permise).

Have Fun ;)
williamprotti Messages postés 44 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 21 mai 2007
7 mai 2006 à 14:41
Merci beaucoup pour cette ressource!!!
Je voudrai juste savoir si elle est fiable, si elle est bien protégée etc...!!
Car je commence a l'utiliser partout sur mon site!!

Merci !
cs_badoux Messages postés 137 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 16 décembre 2008
7 mai 2006 à 00:25
bonsoir à tous,

Oui sur le coup de l'emplacement du message c'est vrai que je n'ai pas assuré, je suis vraiment con... je suis tellement sur des forum php que je me persuade d'y etre même si j'y suis pas ! Veuillez m'excusez !:-o

Au sujet de l'AJAX, ce n'est qu'un terme marketing pour relancer ces vieilles functions javascript que l'on avait oublié !

Voila à bientôt et désolé pour le dérangement !;-)
bonne nuit
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
6 mai 2006 à 22:40
AJAX = Asynchronous Javascript And Xml.
Donc c'est tout simplement l'utilisation de Javascript dans le but de transmettre de l'information sous forme XML, de manière asynchrone (c'est-à-dire grâce l'utilisation d'une méthode quelconque - ici un objet XMLHttpRequest - qui effectue cette opération n'importe quand dans le code).

Je remercie au passage l'auteur, Atlante34, pour en avoir fourni un exemple concret.

En ce qui concerne le standard W3C, il faut savoir que XMLHttpRequest n'en fait pas partie. D'après des recherches perso, le W3C aurait développé un moyen similaire...
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
6 mai 2006 à 20:28
Sans vouloir couper l'herbe sous le pied de Badoux, AJAX c'est juste des vieilles technologies qui sont remises au gout du jour a grand coup de couvertures dans les magazines. On le met un peu à n'importe quelle sauce peut être, mais en l'occurence cette source (Javascript/XMLHttpRequest...) c'est typiquement de l'AJAX quand même.. Ou alors on m'aurait menti ?
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
6 mai 2006 à 19:18
Qu'est-ce que c'est l'AJAX pour toi, précisement ?

D'autre part, on est bien sur le forum javascriptfr.com, et il y a du javascript, non ?
cs_badoux Messages postés 137 Date d'inscription samedi 21 février 2004 Statut Membre Dernière intervention 16 décembre 2008
6 mai 2006 à 19:13
Bonjour,

Perso en PHP, je ferai un simple include dans un div, serte moin dynamique du fais que cela se passe côté serveur et non client !

exemple simple en php :

<?php include($_GET['pageID']); ?>


L'exemple ci-dessus ce n'est même pas du php et encors moin de l'AJAX ! Mais du simple XMLHttpRequest qui existe depuis longtemps !

enfin tout ca pour dire que ca ne devrai pas être placé sur ce forum ;-)

A++
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 mai 2006 à 15:28
GRAZNOK, je ne me contredis pas vraiment... le contenu change par exemple : la valeur d'un compteur de visite, le serveur ajoute 1 à chaque visite, et pourtant, il n'y a pas de mise à jour... c'est une partie dynamique...

dynamique coté client, ça n'a selon moi pas de sens, disons que cette source permet aux gens d'ajouter une fonctionalitée comme l'abscence de rechargement...

tu devrais quand même insérer un parseur pour enlever les balises head, et n'insérer que le contenu entre et comme ça, tu pourrais charger tout style de site (mais le Css pourrait géner...)

ou sinon, tu peux ajouter un effet genre : la nouvelle page est affichée à coté avec une opacitée à 0.5, puis elle vient dessus, puis l'opacité des deux pages s'inverse... puis la page précédente prend comme opacité 0 et la nouvelle 1... bref, on peut faire des effets assez réussi...

je noterais bien 8, mais j'attend... tu ne gères pas les erreurs éventuelles, comme l'abscence de xmlhttprequest sur le navigateur, j'attend la prochaine mise à jour avant de noter...
atlante34 Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 24 janvier 2012
6 mai 2006 à 15:16
merci Graznok

GTR en force ...
GRAZNOK Messages postés 43 Date d'inscription lundi 19 mai 2003 Statut Membre Dernière intervention 21 septembre 2006
6 mai 2006 à 14:25
Tu te contredis coucou747 : dynamique signifie que la page est générée par un serveur, ce qui est contraire à : "le contenu peut changer en sans faire de mise à jour".

Le principe d'AJAX c'est que le contenu d'une page extérieure peut être fusionnée à la page consultée sans que le navigateur recharge la page consultée. Je ne sais pas si "dynamique" est le mot approprié ; sinon "dynamique côté client".

Pour y ajouter le "dynamique côté serveur", il faudrait que la page extérieure soit du PHP, ASP ou autre. Ainsi on aurait les deux côtés du dynamique : "client" grâce à AJAX et "serveur" grâce à PHP.
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mai 2006 à 16:06
"dynamique".... dynamique ça s'ignifie que le contenu peut changer en sans faire de mise à jour... là, c'est pas dynamique car t'as pas de langage serveur... js est un langage statique... disons que ça fait un effet sympa, mais c'est pas du dynamique...
atlante34 Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 24 janvier 2012
5 mai 2006 à 16:02
A TOUTPHP,
Le principe de onload est de faire par exemple un site WEB dynamique, sans utiliser les frames.
Ici le onload charge les vontenus des div, exemples des menus en haut et a gauche, et permet ensuite de charger rien que le milieu.
toutphp Messages postés 107 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 5 mai 2010
5 mai 2006 à 16:00
Mais je pense que l'interet de cet exemple était de montrer qu'il n'y avait pas de rechargement de page lors du click.
Alors qu'avec ton "onload" le contenu est directement présent sur la page au chargement.
atlante34 Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 24 janvier 2012
5 mai 2006 à 15:53
On peut encore faire mieux pour le code,
Par exemple, si on veut que la page se charge dans le div au demarrage de la page, il suffit de mettre a la place de :

mettre,


Permet d'enlever le lien et de rendre la page plus dynamique ...
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mai 2006 à 14:12
c'est pour ça que j'ai dit que ça dépendait de ce que l'on voulait faire...
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
5 mai 2006 à 13:47
Ok ;)
L'indexation peut ne pas être une priorité.. Tout dépend ce qu'on veut faire
Merci en tout cas
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
5 mai 2006 à 13:06
c'est sencé marcher partout, mais faut pas faire ça partout, c'est à consomer avec modération... sinon, les moteurs de recherches indexent mal...
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
5 mai 2006 à 12:23
intéressant !
niveau compatibilité avec les browsers/systèmes connus, ca donne quoi ?
atlante34 Messages postés 14 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 24 janvier 2012
5 mai 2006 à 11:50
Pour repondre a TOUTPHP,
si tu fais envoieRequete('resultat.php','centre');
la page resultat.php s'affichera dans le div dont le id est 'centre'.

C'est mon premier prog en AJAX, donc si il y a des remarques à faire ...
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
5 mai 2006 à 11:12
Bonjour...

A corriger la ligne
xhr_object = new ActiveXObject(Microsoft.XMLHTTP);
par
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");

Sinon intéréssant...
toutphp Messages postés 107 Date d'inscription lundi 24 mai 2004 Statut Membre Dernière intervention 5 mai 2010
5 mai 2006 à 11:05
Juste pour être sur d'avoir tout compris : je fais

envoieRequete('resultat.php','centre');

et le resultat de la page php ce mettra dans le div d'id "centre" ?
Rejoignez-nous