Accueil > Forum > > > > XMLHttpRequest pas de retour php
XMLHttpRequest pas de retour php
mercredi 16 février 2011 à 17:24:44 |
XMLHttpRequest pas de retour php

vol68
|
Hello et merci d'avance
j'ai trouvé pratiquement ce que je cherchai avec le script ci dessous en le modifiant un peu, mais.....
1er probleme en ce qui concerne la reconnaissance du navigateur impossible de faire un ELSE entre Firefox et IE , dans l'alerte il apparait toujours Firefox, seul possibilité faire deux IF et la IE est reconnu.
2eme probleme le script php ne complete pas le SELECT apres la lecture de la base de donnée bien que tout semble etre normale dans les alertes "reponse" et "data"
Si quelqu'un avait une solution
Code HTML : </head>
<SCRIPT TYPE="text/javascript">
function requetebase(f){
//alert("acces javascript");
var scriptphp = "traitementbase.php";
var L1 = f.elements["list1"];
var L2 = f.elements["list2"];
var index = L1.selectedIndex;
if(index < 1){
//alert("L2 < 1");
L2.options.length = 0;
}
else {
//alert("L2 > 1");
var xhr_object = null;
if(window.XMLHttpRequest){ // Firefox
//alert("Firefox");
xhr_object = new XMLHttpRequest();
}
//else
//if (window.ActiveXObject){// Internet Explorer
//alert("IE");
//xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
//}
//else
//if (window.ActiveXObject){// Internet Explorer
//alert("IE");
//xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
if (window.ActiveXObject) {// Internet Explorer
//alert("IE");
try {
xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}
//alert("reponse");
xhr_object.onreadystatechange = function attente() {
if(xhr_object.readyState == 4){
alert("reponse "+xhr_object.responseText);
//document.write(xhr_object.responseText);
eval(xhr_object.responseText);
//document.getElementById(list1).innerHTML = XHR.responseText;
}
//return xhr_object.readyState;
}
//alert("requete");
xhr_object.open("POST", scriptphp, true);
xhr_object.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
var data = "numero_section="+escape(L1.options[index].value)+"&form="+f.name+"&select=list2";
//alert("envoie : "+data);
xhr_object.send(data);
}
}
</script>
<body>
<?php
include("connexionbase.php");
$link = mysql_pconnect($serveur, $utilisateur, $motdepasse);
//$mysql_db = @mysql_pconnect("localhost", "root", "ms1570le");
$basededonnees = "the_wall";
mysql_select_db($basededonnees,$link);
$nomtablesection = "the_wall_tags";
$criteresection = "numero_section";
?>
<div class="Centered">
<form class="CenteredForm" name="form_selects" id="form_selects" action="" method="" onsubmit="return false;">
<fieldset>
<legend>Faites un choix dans la liste de gauche<br />et observez le résultat dans celle de droite</legend>
<div class="Left">
Numero Section :
<?php
echo "<select name='list1' id='list1' class='ButtonL' onchange='requetebase(this.form)'>";
$requetenumesection = "SELECT distinct numero_section FROM $nomtablesection ORDER by numero_section";
$resultatnumsection = mysql_query($requetenumesection,$link);
if (!$resultatnumsection) return FALSE;
echo "<option selected value=''></option>";
while ($affichageselectnumerosection = mysql_fetch_array($resultatnumsection)) {
$num_sec = $affichageselectnumerosection['numero_section'];
echo "<option value=$num_sec>$num_sec</option>";
}
echo "</select>";
echo " tag : ";
echo "<select name='list2' id='list2' class='ButtonL'>";
//echo "<option value='0' selected>choix</option>";
echo "</select>";
?>
</div>
</fieldset>
</form>
</div>
</body>
</html>
Code PHP : <?php
header("Content-type: text/html; charset=iso-8859-1");
include("connexionbase.php");
$link = mysql_pconnect($serveur, $utilisateur, $motdepasse);
$basededonnees = "the_wall";
mysql_select_db($basededonnees,$link);
$nomtablesection = "the_wall_tags";
$criteresection = "numero_section";
$requete = "SELECT DISTINCT tag FROM $nomtablesection WHERE ".$criteresection." = ".$_POST[$criteresection]." ORDER BY tag;";
echo $requete;
echo "var o = null;";
echo "var s = document.forms['".$_POST['form']."'].elements['".$_POST['select']."'];";
echo "s.options.length = 0;";
$resultatrequete = mysql_query($requete,$link);
//echo "s.options[s.options.length] = new Option('choix','');";
while($afficheresultat = mysql_fetch_array($resultatrequete)){
echo "s.options[s.options.length] = new Option('".$afficheresultat['tag']."');";
}
mysql_close($link);
?>
|
|
vendredi 18 février 2011 à 12:13:42 |
Re : XMLHttpRequest pas de retour php

dvwyns
|
Réponse acceptée !
Salut,
Je te conseille d'utiliser Jquery pour parler au serveur via javascript
Voici un lien pour le downloader.
Cette librairie a l'avantage d'être crossbrowser mais aussi est plus simple pour faire des anims, faire de l'ajax, ect...
Voici un code pour te faire une idée de la puissance de jquery
Code Javascript :
$("#list1").change(function() {
$.ajax({ // fonction permettant de faire de l'ajax
type: "POST", // methode de transmission des données au fichier php
url: "file.php", // url du fichier php
data: "param="+$("option:selected",this).text(), // données à transmettre
success: function(msg){
$(#divcontientselect).html(msg);
}
});
}
Comme tu vois ça réduit considérablement la taille du code
Voilà qui arrange ton premier problème.
Pour ton 2ème problème, tu dois remplir ton select dans ta page php appelé que tu termines par un "echo" comportant ton select. Tu retrouveras la valeur dans la variable msg se trouvant en paramètre de la fonction (success: function(msg)), apres tu appelles le div qui contient le select (si il n'existe pas créé le) qui sera rempli par ton select.
Il faut bien sur adapter tout ça a ta sauce, c'est un pseudo exemple, je me rend compte que tu fais des truc avec 2 select mais bon, je pense qu'il est temps pour toi de rentrer dans le monde de Jquery
Dvwyns
|
|
vendredi 18 février 2011 à 16:36:51 |
Re : XMLHttpRequest pas de retour php

007Julien
|
Réponse acceptée !
Il n'est pas obligatoire de charger Jquery (bien que ce soit effectivement une solution) pour faire des requêtes en Ajax. Par contre, il peut être utile d'utiliser un code éprouvé. En voici un (voir la source pour toutes explications complémentaires):
Code Javascript : // D'après http://www.quirksmode.org/js/xmlhttp.html
var xmlFct=[function(){return new XMLHttpRequest()},
function(){return new ActiveXObject("Msxml2.XMLHTTP")},
function(){return new ActiveXObject("Msxml3.XMLHTTP")}];
function xmlObj(){
var xmlhttp=false;
for (var i=0;i<xmlFct.length;i++) {
try{xmlhttp = xmlFct[i]();}
catch(e){continue;}
break;}
return xmlhttp;
};
function sndRqu(url,cllbck,pstDta){
var req=xmlObj();
if (!req) return;
var mth=(pstDta)? "POST":"GET";
req.open(mth,url,true);
req.setRequestHeader('User-Agent','XMLHTTP/1.0');
if (pstDta) req.setRequestHeader('Content-type','application/x-www-form-urlencoded');
req.onreadystatechange=function(){
if (req.readyState!=4) return;
if (req.status!=200 && req.status!=304) {// 200 Ok, 304 Redirection Not modified
// alert('HTTP error ' + req.status);
return;}
cllbck(req);}
if (req.readyState==4) return;
req.send(pstDta);
};
|
|
samedi 19 février 2011 à 07:52:41 |
Re : XMLHttpRequest pas de retour php

vol68
|
Réponse acceptée !
Hello, et déja merci pour l'interet que vous portez à ma demande.
Pour ce quiest de JQuery si je pouvais m'en passer j'aimerais autant mais en dernier recour effectivement c'est une solution.
Pour la reponse de 007julien, apparement ma solution fonctionne mais le probleme c'est que le retour PHP qui devrait remplir mon select ne marche pas voici la reponse que jobtiens dans "document.write(xhr_object.responseText);"
<< SELECT DISTINCT tagtexte FROM the_wall_tagstextes WHERE numero_section = 2 ORDER BY tagtexte var o = null ; var s = document.forms["form_selects"].elements["list2"] ; s.options.length = 0 ; s.options[s.options.length] = new Option("testvol68") ; s.options[s.options.length] = new Option("toto") ;>>
donc javascript fait son boulot et php fait presque le sien la base de donnée est lue et les infos converties en javascript mais pourquoi le SELECT "List2" n'est il pas rempli, manque t'il quelque chose? la reponse transcrite en javascript fonctionne
Code Javascript : <SCRIPT TYPE="text/javascript">
function test(){
var o = null;
var s = document.forms["form_selects"].elements["list2"];
s.options.length = 0;
s.options[s.options.length] = new Option("testvol68");
s.options[s.options.length] = new Option("toto");
s.options[s.options.length] = new Option(s);
}
</script>
j'ai beau rechercher sur le net je ne trouve pas pourtant cela fonctionne j'ai eu l'occasion de tester des fonction similaires sur /www.toutjavascript.com/savoir/xmlhttprequest.php3 section 5 il y a surement un truc que je ne voi pas,
|
|
samedi 19 février 2011 à 13:07:41 |
Re : XMLHttpRequest pas de retour php

007Julien
|
Réponse acceptée !
Pour générer proprement des selects au vol voir la page suivante (http://www.javascriptkit.com/javatutors/selectcontent.shtml) qui utilise le tableau options et new Options("text","value") (les deux derniers arguments sont facultatifs mais pourraient également être utilisés).
La meilleure solution consisterait alors, me semble-t-il, à ne générer en PHP que des chaînes
Code PHP : $chnSlc="value1|text1|value2|text2|value3|text3";
pour les incruster et les transformer en tableaux en javascript soit dès l'ouverture, soit après une requête Ajax.
Code Javascript :
var tabSlc="<?php echo $chnSlc ?>".split(/\|/g);
function InitOrRemoveSelect(){
document.myform.master.options.length=0;
for (i=0;i<tabSlc.length;i++)
if (i%2==0) {// Utiliser i et i+1 pour les seuls i pairs
document.myform.master.options[i>>1]=new Option(tabSlc[i],tabSlc[i+1]);
}
}
|
|
samedi 19 février 2011 à 14:17:23 |
Re : XMLHttpRequest pas de retour php

vol68
|
hello
en fait j'ai trouvé l'erreur dans le réponse PHP ci dessous generée apres le requete AJAX XMLHttpRequest,
<< SELECT DISTINCT tagtexte FROM the_wall_tagstextes WHERE numero_section = 2 ORDER BY tagtexte var o = null ; var s = document.forms["form_selects"].elements["list2"] ; s.options.length = 0 ; s.options[s.options.length] = new Option("testvol68") ; s.options[s.options.length] = new Option("toto") ;>>
j'avais laissé trainer un ECHO, en effet la ligne SELECT DISTINCT.......ORDER BY tagtexte non comprise par javascript empechait la fonction EVAL de fonctionner, évident, quel quiche, maintenant je me retrouve bien avec une implementation du SELECT id="list2" par les donner de la base en fonction du contenu choisi dans le SELECT id="list1" genéré par le PHP.
pour ce qui est du premier probleme en fait a partir de IE7 plus besoin de ActiveXObject("Msxml2.XMLHTTP"), XMLHttpRequest() est tres bien reconnu.
je vous remercie tout de meme d'avoir pris le temps de tenter de resoudre mon probleme
|
|
Cette discussion est classée dans : alert, xhr, object, activexobject, if
Répondre à ce message
Sujets en rapport avec ce message
Fonction AJAX qui ne se déclenche pas [ par Shivan0910 ]
Bonjour, Je sollicite de votre bienveillance dans la résolution de ce problème qui tend à m'épuiser J'ai deux fonctions function creationXHR() { var
Requête Ajax avec Jquery [ par monoski ]
Bonsoir tout le monde j'aimerai bien passer à Jquery pour mes requêtes ajax qui sont codées actuellement en "dur" on va dire ^^ Alors ayant lu les do
parser un xml [ par zeitoun69 ]
Bonjour je dois parser un fichier xml et former un tableau a partir des données extraite j'ai réussi a former le tableau mais les données sont celles
jquery et ajax formulaires [ par Annadrill ]
bonsoir, j'aimerais savoir comment je dois m'y prendre pour recréer un script du type de celui ci-dessous pour jquery, le systeme étant que les cha
Vérification de doublons [ par eddie5150 ]
Bonjour à tous,je viens de me lancer dans AJAX, mais je ne comprends pas encore tout très bien,aussi j'ai essayé d'effectuer une vérification automati
settimeout [ par nicomilville ]
pouvez vous me dire ou est l'erreur dans ce code svp, il semblerait que l'erreur soit a la ligne rouge : setTimeout(actualisation(), 10); function
Deroulement de script [ par blatip ]
Bonjour,Je suis nouveau, donc toutes mes excuses si je ne suis pas assez clair ...Mon souci :J'ai fait une page qui fait appel à un script JSCe script
Envoi de donnée [ par coolboy78 ]
Bonjour,je debute en ajax, j'aimerai, lorsque mon utilisateur quitte ma page, faire un update dans ma base.Comment faire ?j'ai débuté avec ca :functio
asynchrone [ par nicomilville ]
voici mon code :var xhr_object = null;if(window.XMLHttpRequest)xhr_object = new XMLHttpRequest();else if(window.ActiveXobject)xhr_object = new ActiveX
XMLHttpRequest [ par softghost ]
bonjour tous le monde;j'utilise xmlhttprequest pour l'envoi de requet entre les page en restand sur index avec un il marche tres bien, a mon cas j'ape
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|