Evony
Messages postés32Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention17 juin 2009
-
16 juin 2009 à 11:10
Evony
Messages postés32Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention17 juin 2009
-
17 juin 2009 à 09:35
Bonjour,
Je ne sais pas si je poste au bon endroit
J'ai une page php avec un formulaire contenant une liste avec des employé, une date, une durée, une activité et enfin un commentaire.
J'ai un bouton d'ajout d'activité qui rajoute les infos ci-dessus dans ma base de données ACCESS.
Pour cela j'ai créé un script AJAX qui appelle une 2ème page php pour effectuer la requete sans recharger ma page.
Cepandant, les varaible de mon formulaire ne sont pas transmises par le script, donc tout les champs rajoutés dans ma base de données sont nul.
Ma question est donc comment fair passer les variables d'une page à l'autre via le script ajax.
Evony
Messages postés32Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention17 juin 2009 16 juin 2009 à 14:41
sa ne marche toujours pas.
Voici mon send:
xhr_object.send("empaj="+document.frm.emp.options[document.frm.emp.selectedIndex].value +"dateaj"+document.frm.dateaj.value
+"dureeaj"+document.frm.duree.value+"actaj"+document.frm.act.value+"comaj"+document.frm.com.value);
et la voici ma page qui receptionne la script:
$emp = $_POST["empaj"];
$act = $_POST["actaj"];
$date1x = $_POST["dateaj"];
$com = $_POST["comaj"];
$duree = $_POST["dureeaj"];
$rs3 = mssql_query("select max(NumCra) as num from Cra");
$ligne3 = mssql_fetch_array($rs3);
$code=$ligne3[num]+1;
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 16 juin 2009 à 15:10
tu as une (des) erreurs quelque part
____ coté javascript fais :
var tmp= "empaj="+document.frm.emp.options[document.frm.emp.selectedIndex].value
+" & dateaj ="+document.frm.dateaj.value
+"&dureeaj= "+document.frm.duree.value
+" & actaj ="+document.frm.act.value
+"&comaj="+document.frm.com.value;
alert(tmp); xhr_object.send(tmp);
pour contrôler les contenus
____ coté php, fait des echo de ce que tu reçois
____ ensuite tu as : xhr_object.open("POST", fichier, true);
donc en asynchrone !
et je ne vois nulle part que tu attends la réponse ?
il faut faire un machin du style :
xhr_object.onreadystatechange = function()
{ if(xhr_object.readyState == 4)
{ on peut traiter xhr_object.responseText...
ce que renvoie le php
}
}
xhr_object.open("POST"....
xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr_object.send(paramètres);
Outils / Console d'erreurs
et mieux : télécharger FireBug
,
----
Internet
Explorer
,
activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS
,
----
K-Meleon
,
utils / Cons
,
----
Opera
,
utils / Asole d'erreurs
,
----
Safari
,
Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
----
Bul3
Messages postés4933Date d'inscriptionsamedi 1 juillet 2006StatutMembreDernière intervention 2 février 201516 16 juin 2009 à 15:16
zut.. mauvais copié/collé ?
Navigateurs |Quelques Explications |----
Chrome
, contrôler page actuelle / Options pour développeurs
/ Console Javascript, ----
FireFox
, Outils / Console d'erreurs
et mieux : télécharger FireBug, ----
Internet
Explorer
, activer le deboggage : Outils/options Internet/Avancés
dans la liste, sous "Navigation" : décocher
o Afficher une notification de chaque erreur de script
o Désactiver le débogage de Scripts (Internet Explorer)
et mieux (pour IE < 8) : télécharger le Debogger IE
voir aussi : DebugBar et Companion JS, ----
K-Meleon
, Outils / Console d'erreurs, ----
Opera
, utils / Asole d'erreurs, ----
Safari
, Debug / Show JavaScript Console
° modifier Fichier com.apple.Safari.plist situé dans le
répertoire : Support:\Documents and Settings\utilisateur
\Application Data\Apple Computer\Safari\Preferences\
y ajouter <key>IncludeDebugMenu</key>
affiche mysql_error() après les ordres sql, $rs3,$ligne3....
pas sûr de max(NumCra)...
de plus, on n'a pas ta base de données,
et moi je suis trop petit pour voir sans tester
si tu es sûr que tout est correctement transmis....
Evony
Messages postés32Date d'inscriptionmercredi 18 février 2009StatutMembreDernière intervention17 juin 2009 16 juin 2009 à 16:13
____ ensuite tu as : xhr_object.open("POST", fichier, true);
donc en asynchrone !
et je ne vois nulle part que tu attends la réponse ?
il faut faire un machin du style :
xhr_object.onreadystatechange = function()
{ if(xhr_object.readyState == 4)
{ on peut traiter xhr_object.responseText...
ce que renvoie le php
}
}
xhr_object.open("POST"....
xhr_object.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr_object.send(paramètres);
Par contre je ne comprend pas très bien cette partie (un peu comme le reste )
Peut-être que mon erreur viens de là car effectivement, les valeurs "viennent" bien dans le scripts, mais je n'arrive pas à les "redonner" a ma 2ème page php.
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 16 juin 2009 à 16:43
Ok c'est parce que tu est en asynchrone que l'alert() ne donne rien refait le même test que je t'ai donné mais met le alert() dans ton onreadystatechange... .. .
kankrelune
Messages postés1293Date d'inscriptionmardi 9 novembre 2004StatutMembreDernière intervention21 mai 2015 16 juin 2009 à 17:34
get/post c'est du pareil au même... pour le onready faudrait savoir tu en a un dans les premiers code que tu donne.. .. .
essaye ça...
function sendRequest(url,params) {
if(!url) {
throw new Error('Invalid url');
}
if(!params) {
params = null;
}
var reqObj;
if(window.ActiveXObject) {
var ieXHR = [
"Msxml2.XMLHTTP","Microsoft.XMLHTTP",
"Msxml2.XMLHTTP.7.0","Msxml2.XMLHTTP.6.0",
"Msxml2.XMLHTTP.5.0","Msxml2.XMLHTTP.4.0",
"Msxml2.XMLHTTP.3.0"
];
for (var i=0; i uniquement et rien d'autre dans un premier temps)...