[PHP/AJAX] Souci avec les fonctions...
Résolu/Fermé
alix387
Messages postés
18
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
16 février 2012
-
2 oct. 2007 à 18:19
alix387 Messages postés 18 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 16 février 2012 - 3 oct. 2007 à 15:20
alix387 Messages postés 18 Date d'inscription dimanche 30 septembre 2007 Statut Membre Dernière intervention 16 février 2012 - 3 oct. 2007 à 15:20
A voir également:
- [PHP/AJAX] Souci avec les fonctions...
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Les fonctions excel en anglais - Guide
- Php alert - Forum PHP
- Retour à la ligne php ✓ - Forum PHP
5 réponses
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
2 oct. 2007 à 21:19
2 oct. 2007 à 21:19
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…
alix387
Messages postés
18
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
16 février 2012
2 oct. 2007 à 22:39
2 oct. 2007 à 22:39
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']
alix387
Messages postés
18
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
16 février 2012
2 oct. 2007 à 22:59
2 oct. 2007 à 22:59
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
alix387
Messages postés
18
Date d'inscription
dimanche 30 septembre 2007
Statut
Membre
Dernière intervention
16 février 2012
3 oct. 2007 à 15:20
3 oct. 2007 à 15:20
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 ;)