[PHP/AJAX] Souci avec les fonctions...
Résolu
alix387
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
alix387 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
alix387 Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerai avoir une petite aide de votre part pour mon problème suivant: je voudrais pouvoir tout simplement changer le contenu d'une div sans recharger la page, donc grâce à l'ajax et php, en cliquant sur des liens... par exemple j'ai un lien1 et je voudrait que la div ai le contenu1, lien2 -> contenu2, lien3 -> contenu3 ..etc
Alors çà marche mais bon, pas vraiment en faite ^^ , je vous colle mon code, si vous voulez le tester, suivez ce lien : http://www.ideesfrance.org/ajaxtest.php
/* code */
<?php
function affiche()
{
$reponse = new xajaxResponse();
$reponse->setCharEncoding('ISO-8859-1');
if (lien1)
{
$block = 'lien1 ok';
}
elseif (lien2)
{
$block = 'lien2 ok';
}
elseif (lien3)
{
$block = 'lien3 ok';
}
else
{
$block = 'raté';
}
$reponse->addAssign("block", "innerHTML", $block);
return $reponse->getXML() ;
}
function envoyer()
{
$reponse = new xajaxResponse();
$reponse->setCharEncoding('ISO-8859-1');
$reponse->addAssign("block", "innerHTML", '');
$reponse->addScript("xajax_affiche();");
return $reponse->getXML() ;
}
require("xajax.inc.php");
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("envoyer");
$xajax->registerFunction("affiche");
$xajax->processRequests();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test ajax</title>
<?php $xajax->printJavascript();?>
</head>
<body>
<a href="#" id="lien1" onclick="xajax_envoyer('lien1');">lien 1</a>
<a href="#" id="lien2" onclick="xajax_envoyer('lien2');">lien 2</a>
<a href="#" id="lien3" onclick="xajax_envoyer('lien3');">lien 3</a>
<div id="block">texte original</div>
</body>
</html>
Si vous avez une solution... elle est la bienvenue !
Merci ;)
J'aimerai avoir une petite aide de votre part pour mon problème suivant: je voudrais pouvoir tout simplement changer le contenu d'une div sans recharger la page, donc grâce à l'ajax et php, en cliquant sur des liens... par exemple j'ai un lien1 et je voudrait que la div ai le contenu1, lien2 -> contenu2, lien3 -> contenu3 ..etc
Alors çà marche mais bon, pas vraiment en faite ^^ , je vous colle mon code, si vous voulez le tester, suivez ce lien : http://www.ideesfrance.org/ajaxtest.php
/* code */
<?php
function affiche()
{
$reponse = new xajaxResponse();
$reponse->setCharEncoding('ISO-8859-1');
if (lien1)
{
$block = 'lien1 ok';
}
elseif (lien2)
{
$block = 'lien2 ok';
}
elseif (lien3)
{
$block = 'lien3 ok';
}
else
{
$block = 'raté';
}
$reponse->addAssign("block", "innerHTML", $block);
return $reponse->getXML() ;
}
function envoyer()
{
$reponse = new xajaxResponse();
$reponse->setCharEncoding('ISO-8859-1');
$reponse->addAssign("block", "innerHTML", '');
$reponse->addScript("xajax_affiche();");
return $reponse->getXML() ;
}
require("xajax.inc.php");
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("envoyer");
$xajax->registerFunction("affiche");
$xajax->processRequests();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test ajax</title>
<?php $xajax->printJavascript();?>
</head>
<body>
<a href="#" id="lien1" onclick="xajax_envoyer('lien1');">lien 1</a>
<a href="#" id="lien2" onclick="xajax_envoyer('lien2');">lien 2</a>
<a href="#" id="lien3" onclick="xajax_envoyer('lien3');">lien 3</a>
<div id="block">texte original</div>
</body>
</html>
Si vous avez une solution... elle est la bienvenue !
Merci ;)
A voir également:
- [PHP/AJAX] Souci avec les fonctions...
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Fonction si avec ou - Guide
- Php alert - Forum PHP
5 réponses
salut,
je ne sais pas ce qui ne colle pas dans ton code, d'autant que nous n'avons pas le code en entier.
j'ai utilisé récemment la lessive pour afficher un calendrier de mois en mois sans recharger, je te file le code qui me semble beaucoup plus simple, je ne sais plus où je l'ai trouvé.
le JS dans la page :
le lien qui l'appelle :
sachant que dans le script php il y a le traitement et qu'il me retourne du code html qui sera inclu dans le '<div id="cible">'.
quelque chose du genre :
et c'est tout…
je ne sais pas ce qui ne colle pas dans ton code, d'autant que nous n'avons pas le code en entier.
j'ai utilisé récemment la lessive pour afficher un calendrier de mois en mois sans recharger, je te file le code qui me semble beaucoup plus simple, je ne sais plus où je l'ai trouvé.
le JS dans la page :
<script type="text/javascript">
function makeRequest(url) {
var httpRequest = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType) {
httpRequest.overrideMimeType(\'text/xml\');
}
}
else if (window.ActiveXObject) { // IE
try {
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) {}
}
}
if (!httpRequest) {
alert(\'Abandon :( Impossible de créer une instance XMLHTTP\');
return false;
}
httpRequest.onreadystatechange = function() { modifyContents(httpRequest); };
httpRequest.open(\'GET\', url, true);
httpRequest.send(null);
}
function modifyContents(httpRequest) {
if (httpRequest.readyState == 4) {
if (httpRequest.status == 200) {
document.getElementById("cible").innerHTML = httpRequest.responseText;
} else {
alert(\'Un problème est survenu avec la requête.\');
}
}
}
</script>
le lien qui l'appelle :
<p><a href="#" onclick="makeRequest('script.php?variable=valeur')">Lien</a></p>
sachant que dans le script php il y a le traitement et qu'il me retourne du code html qui sera inclu dans le '<div id="cible">'.
quelque chose du genre :
<?php if (isset($_GET['variable'])) { echo '<p>La variable est définie, elle vaut '.$_GET['variable'].'.</p>'; } else { echo '<p>La variable n'est pas définie.</p>'; } ?>
et c'est tout…
si si le code est entier, le probleme est que si je clique sur 'lien1' ou 'lien2' ou 'lien3' j'ai toujours le texte 'lien1 ok' dans ma div ... rt pas le texte voulu comme dans mon code, suivant des conditions, comme je pourrais l'avoir avec un $_GET mais en rechargeant ma page par contre... chose justement que je voudrai éviter...
je vais étudier ce bout de code proposé déjà, mais si y'en a d'autres qu'i peuvent m'aider, toujours pas de refus ^^
edit: je ne souhaite pas pour ce cas là faire d'appel extérieur, je voudrais pouvoir tout faire depuis le même endroit :)
je vais étudier ce bout de code proposé déjà, mais si y'en a d'autres qu'i peuvent m'aider, toujours pas de refus ^^
edit: je ne souhaite pas pour ce cas là faire d'appel extérieur, je voudrais pouvoir tout faire depuis le même endroit :)
Bonsoir,
Il faut a un moment envoyer la valeur du lien au script php appelé.
Moi j'utilise la methode POST
et l'appel de fonction:
et script.php récupère la valeur du lien par
$val=$_POST['val_lien']
Il faut a un moment envoyer la valeur du lien au script php appelé.
Moi j'utilise la methode POST
// Requette AJAX function makeRequest(url,valeur_lien,id_ecrire){ var http_request = false; //créer une instance (un objet) de la classe désirée fonctionnant sur plusieurs navigateurs if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml');//un appel de fonction supplémentaire pour écraser l'en-tête envoyé par le serveur, juste au cas où il ne s'agit pas de text/xml, pour certaines versions de navigateurs Mozilla } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Abandon :( Impossible de créer une instance XMLHTTP'); return false; } http_request.onreadystatechange = function() { traitementReponse(http_request,id_ecrire); } //affectation fonction appelée qd on recevra la reponse // lancement de la requete http_request.open('POST', url, true); //changer le type MIME de la requête pour envoyer des données avec la méthode POST , !!!! cette ligne doit etre absolument apres http_request.open('POST'.... http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); data="val_lien="+valeur_lien; http_request.send(data); } function traitementReponse(http_request,id_ecrire) { var affich=""; if (http_request.readyState == 4) { if (http_request.status == 200) { // cas avec reponse de PHP en mode texte: //chargement des elements reçus dans la liste var affich_list=http_request.responseText; obj = document.getElementById(id_ecrire); obj.innerHTML = affich_list; } else { alert('Un problème est survenu avec la requête.'); } } }
et l'appel de fonction:
<p><a href="#" onclick="makeRequest('script.php,'lien1','id_div_a_ecrire')">Lien1</a></p>etc pour lien2 , lien3...
et script.php récupère la valeur du lien par
$val=$_POST['val_lien']
Ah bah çà devrait faire l'affaire ^^ j'ai compris donc je testerai çà quand il fera jour :) j'avais essayé grosso merdo çà mais j'ai raté ... pas grave, çà ne fait pas de mal un petit coup de mains, merci, je vous tiendrais au jus ;)
je ne le mets pas comme résolu pour le moment
je ne le mets pas comme résolu pour le moment
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
alors j'ai réussi à faire ce que je voulais, je vous colle le code final :( http://ideesfrance.org/ajaxtest.php pour tester )
<?php
function envoyer($lien)
{
$reponse = new xajaxResponse();
$reponse->setCharEncoding('ISO-8859-1');
$reponse->addAssign("block", "innerHTML", '');
if ($lien == lien1)
{
$block = 'lien1 ok';
}
elseif ($lien == lien2)
{
$block = 'lien2 ok';
}
elseif ($lien == lien3)
{
$block = 'lien3 ok';
}
else
{
$block = 'raté';
}
$reponse->addAssign("block", "innerHTML", $block);
return $reponse->getXML() ;
}
require("xajax.inc.php");
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("envoyer");
$xajax->registerFunction("affiche");
$xajax->processRequests();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test ajax</title>
<?php $xajax->printJavascript();?>
</head>
<body>
<a href="#" id="lien1" onclick="xajax_envoyer('lien1');">lien 1</a>
<a href="#" id="lien2" onclick="xajax_envoyer('lien2');">lien 2</a>
<a href="#" id="lien3" onclick="xajax_envoyer('lien3');">lien 3</a>
<div id="block">texte original</div>
</body>
</html>
c'était vraiment tout bête, mais c'est toujours sur des choses faciles que l'on bute le plus ^^
problème résoudu !
merci ;)
alors j'ai réussi à faire ce que je voulais, je vous colle le code final :( http://ideesfrance.org/ajaxtest.php pour tester )
<?php
function envoyer($lien)
{
$reponse = new xajaxResponse();
$reponse->setCharEncoding('ISO-8859-1');
$reponse->addAssign("block", "innerHTML", '');
if ($lien == lien1)
{
$block = 'lien1 ok';
}
elseif ($lien == lien2)
{
$block = 'lien2 ok';
}
elseif ($lien == lien3)
{
$block = 'lien3 ok';
}
else
{
$block = 'raté';
}
$reponse->addAssign("block", "innerHTML", $block);
return $reponse->getXML() ;
}
require("xajax.inc.php");
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->decodeUTF8InputOn();
$xajax->registerFunction("envoyer");
$xajax->registerFunction("affiche");
$xajax->processRequests();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>test ajax</title>
<?php $xajax->printJavascript();?>
</head>
<body>
<a href="#" id="lien1" onclick="xajax_envoyer('lien1');">lien 1</a>
<a href="#" id="lien2" onclick="xajax_envoyer('lien2');">lien 2</a>
<a href="#" id="lien3" onclick="xajax_envoyer('lien3');">lien 3</a>
<div id="block">texte original</div>
</body>
</html>
c'était vraiment tout bête, mais c'est toujours sur des choses faciles que l'on bute le plus ^^
problème résoudu !
merci ;)