Problème d'envoi de données

Résolu
cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006 - 9 oct. 2006 à 15:54
cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006 - 16 oct. 2006 à 09:23
Bonjour,


Je développe un site et j'utilise un XMLhttpRequest pour aller mettre à jour une table de ma base de données.

Dans ma fonction javascript qui appelle mon script php, j'ai mis un alert() pour vérifier que mes paramètres soient corrects.

Mon problème c'est que quand il y a le "alert()" tout ce passe bien et
les mises à jour ce font bien, par contre quand j'enlève le "alert()",
il y a mon message d'erreur qui s'affiche (Problème grave, prévenir la
maintenance, pas d'ajout de document) (cf code).


Est-ce déjà arrivé à quelqu'un ?

Mon code :
function majdoc(type){

// Contrôle des saisies
switch(type)
{
case 0:
doc_nom = document.getElementById("nom_doc").value;
nom_aut = document.getElementById("nom_aut").value;
doc_com = document.getElementById("doc_com").value;
doc_typ = document.getElementById("type").value;
doc_cat = document.getElementById("cat").value;

// Contrôle des saisies
if(doc_nom == ""){
alert("Le nom du document est obligatoire");
document.getElementById("nom_doc").focus();
return false;
}

if(nom_aut == ""){
alert("Le nom de l'auteur est obligatoire");
document.getElementById("nom_aut").focus();
return false;
}

if(doc_com == ""){
alert("Veuillez décrire le document ajouté");
document.getElementById("doc_com").focus();
return false;
}

if(doc_cat == ""){
alert("Veuillez choisir une catégorie");
return false;
}

// Création de la chaine de paramètres
chaine = "nom=" + doc_nom + "&aut=" + nom_aut + "&com=" + doc_com + "&typ=" + doc_typ + "&ext=";
break;
case 1:
doc_nom = document.getElementById("nom_doc").value;
doc_com = document.getElementById("doc_com").value;
doc_typ = document.getElementById("type").value;
doc_ext = document.getElementById("ext").value;
doc_cat = document.getElementById("cat").value;

// Contrôle des saisies
if(doc_nom == ""){
alert("Le titre de la demande est obligatoire");
document.getElementById("nom_doc").focus();
return false;
}

if(doc_com == ""){
alert("Veuillez ajouter le texte de votre demande");
document.getElementById("doc_com").focus();
return false;
}

if(doc_ext == ""){
alert("Veuillez sélectionner un type de document");
return false;
}

if(doc_cat == ""){
alert("Veuillez choisir une catégorie");
return false;
}

// Création de la chaine de paramètres
chaine = "nom=" + doc_nom + "&aut=&com=" + doc_com + "&typ=" + doc_typ + "&ext=" + doc_ext;
break;
default:
alert("Gros problème prévenir le support technique");
break;
}

// Récupération des paramètres
var obj;

// Détection du navigateur utilisé
if(window.XMLHttpRequest) // Firefox
obj = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
obj = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
return;
}

// Définition des paramètres d'envoi
obj.open("POST","MajDocOk.php",true);

// Traitement de la requête
obj.onreadystatechange = function(){
if(obj.readyState == 4){
if(obj.responseText == ""){
alert("Problème grave, prévenir la maintenance, pas d'ajout de document");
}
else{
document.getElementById("Aff").innerHTML = obj.responseText;
}
};
}

// Envoi de la requête
obj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
obj.send(chaine);
alert(chaine);
}

Lecra

11 réponses

cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006
16 oct. 2006 à 09:23
Salut,

J'ai trouvé la solution, en fait c'est dû à mon formulaire de saisie qui appelle ma fonction javascript.
J'avais laissé le POST dans le form de mon formulaire.
3
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
10 oct. 2006 à 00:20
B
onsoir...


...un lien utile A voir ICI ...




;0)
0
cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006
11 oct. 2006 à 14:11
Bonjour,

merci mais le problème est toujours là.
J'utilise cette syntaxe pour d'autres fonctions dans le même projet et il n'y a pas d'erreur.
Il semble que ce problème apparaisse quand il y a récupération de données sur la page par un getElementById.
0
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
12 oct. 2006 à 01:02
Salut

Tu parles de quelle alert() que tu enleves et que tu remets ??
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
12 oct. 2006 à 01:09
Re salut

tu devrais tester si l'erreur viens de l'objet AJAX ou si elle vient de ton php
change ta fonction par celle ci

obj.onreadystatechange = function(){
        if(obj.readyState == 4){
               if(obj.status == 200 ){
                     if(obj.responseText == ""){
                        alert("Problème grave, prévenir la maintenance, pas d'ajout de document");
                     }
                     else{
                        document.getElementById("Aff").innerHTML = obj.responseText;
                     }
               }
               else alert('code erreur : '+obj.status+'   status : '+obj.statusText);
}

Si l'ajax c'est bien déroulée alors tu n'auras pas mon alert décrivant le code erreur et le statut courant et donc cela vien du php

voila bon courage

-- The Rubik's Man --
0
cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006
12 oct. 2006 à 09:25
Salut,

Je parlais du dernier alert().
Je vais tester ton code dans la matinée et te tiends au courant
0
cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006
12 oct. 2006 à 10:12
Ok j'ai testé et ton alert() n'apparait pas, il faut que j'aille creuser côté php.
Ce que je comprends pas, c'est pourquoi ça marche quand il y a le "alert()"

Merci
0
cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006
12 oct. 2006 à 12:39
J'ai changé mon code php par :

<?
$nom = $_POST['nom'];
$aut = $_POST['aut'];
$com = $_POST['com'];
$typ = $_POST['typ'];
$ext = $_POST['ext'];

echo "

        nom : $nom

        aut : $aut

        com : $com

        typ : $typ

        ext : $ext
   
";
?>

et il présente toujours le même problème.

Je ne comprend pas pourquoi quand il y a le "alert()" le "responseText" est alimenté alors que quand je l'enlève, le "responseText" = ""

Je crois que je vais casser du pc avant la fin de la journée
0
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
12 oct. 2006 à 22:11
Salut bon moi j'ai tester tout ton code

et tout marche correctement.... meme sans l'alerte... cependant laisse tout le contenu de ton fichier html pour voir également la ou cela pourait coincer...

mais bon jpense que c'est ton serveur php qui bug car moi tout marche nikel

par contre aussi.... change le "<?" d'entrée du fichier php par "<?php" mais pour le reste... tout est bon

aussi sur quel navigateur tu testes???

--The Rubik's Man--
0
cs_couicoui Messages postés 7 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 16 octobre 2006
13 oct. 2006 à 09:24
Ok merci, je vais tester avec le <?php dans la journée.

Pour les navigateurs, je teste sous firefox 2.0, Opera 9.02 et IE 6.

Je vais voir de récupérer un autre serveur (là je suis sous easyphp).

Merci,
0
rubiks10 Messages postés 224 Date d'inscription lundi 19 décembre 2005 Statut Membre Dernière intervention 6 juin 2007 3
13 oct. 2006 à 17:08
Ok n'oublie pas de me tenir au courant sur l'evolution de ton probleme car je suis un bon connaisseur de ajax et ce probleme m'intrigue.
Ce qui est sur c'est que cela vient du serveur php ( peut être trop lent... ) car le alert() ralentit le tout...
Mais bon je ne vois pas pourquoi cela poserait un probleme car ton serveur t'envoie bien les données si tu mets l'alert.

A la rigueur si tu pouvais mettre ici le code complet de ta page HTML.. car peut être un element pose probleme. Car pour mon test j'ai juste mis un bouton afin de lancer ta fonction.

Voila j'attends la suite....

--The Rubik's Man--
0
Rejoignez-nous