IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Retour non interprèté dans la méthode success [AJAX]


Sujet :

jQuery

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Points : 38
    Points
    38
    Par défaut Retour non interprèté dans la méthode success
    Bonjour,

    Je m'essaie par ces temps moroses à ajax/cgi.

    Tout d'abord, sachez que je n'ai pas de compétences en javascript, merci d’être indulgent !

    Par ailleurs, la méthode utilisée est GET pour envoyer les données du formulaires, tout ceci
    tourne sur un LAN, la sécurité n'est donc pas considérée.

    Alors voila, un formulaire simple dans une page html sollicite un javascript qui lui-même
    appelle un script shell cgi. Le script cgi reçoit bien les données et exécute un programme avec
    2 arguments saisis dans le formulaire. Ce script est sensé renvoyer "success" mais cette chaîne
    n'est pas comprise par le javascript script puisque la fonction formSuccess(); (voir plus bas)
    n'est jamais interprétée. Le "echo success" du script cgi apparaît bien lui, bien sur la page.

    Voici le javascript et le script shell cgi, je vous épargne le formulaire html.

    D'avance merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    1 - formulaire html
     
    2 - script
     
    <script type="text/javascript"
    $("#lm2sstreamForm").validator().on("submit", function (event) {
        if (event.isDefaultPrevented()) {
            formError();
            submitMSG(false, "Avez vous bien complete le formulaire ?");
        } else {
            event.preventDefault();
            submitForm();
        }
    });
     
     
    function submitForm(){
        var url = $("#url").val();
        var cle = $("#cle").val();
     
        $.ajax({
            type: "GET",
            url: "http://192.168.1.38:2929/cgi-bin/test.cgi",
            dataType : 'html',
            data: "url=" + url + "&cle=" + cle,
            success : function(text, statut){
                if (text == "success"){
                    formSuccess();
                } else {
                    formError();
                    submitMSG(false,text);
                }
            }
        });
    }
     
    function formSuccess(){
        $("#lm2sstreamForm")[0].reset();
        submitMSG(true, "Lancement du programme OK !")
    }
     
    function formError(){
        $("#lm2sstreamForm").removeClass().addClass('shake animated').one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function(){
            $(this).removeClass();
        });
    }
     
    function submitMSG(valid, msg){
        if(valid){
            var msgClasses = "h3 text-center tada animated text-success";
        } else {
            var msgClasses = "h3 text-center text-danger";
        }
        $("#msgSubmit").removeClass().addClass(msgClasses).text(msg);
    }
    </script>
     
    3 - script cgi 
    #!/bin/sh
     
    echo "Content-type: text/html; charset=UTF_8"
    echo "Access-Control-Allow-Origin: *"
    echo "Access-Control-Allow-Methods: GET, POST"
    echo ""
     
     
    if [ "$REQUEST_METHOD" = "GET" ]; then
     
     
        Var1=$(echo "$QUERY_STRING" | sed -n 's/^.*url=\([^&]*\).*$/\1/p')
        URL=$(echo -e $(echo "$Var1" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;'))
     
        Var2=$(echo "$QUERY_STRING" | sed -n 's/^.*cle=\([^&]*\).*$/\1/p')
        CLE=$(echo -e $(echo "$Var2" | sed 's/+/ /g;s/%\(..\)/\\x\1/g;'))
     
        echo "URL=${URL} -- CLE=${CLE}" > /tmp/myprogramm.trace
     
        /usr/local/packages/myprogramm ${URL} ${CLE} >/dev/null 2>/dev/null &
        echo $! > /tmp/myprogramm.pid
     
        echo "success"    # ceci s'affiche bien sur la page du formulaire une fois l'ensemble éxécuté.
     
    else
     
        echo "error"
     
    fi
     
    exit 0

  2. #2
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 410
    Points : 4 851
    Points
    4 851
    Par défaut
    Bonjour,

    Si le callback d'ajax success n'est pas interprété, alors probablement que la variable text est différente de "success"' ou bien qu'il y'a une erreur dans ton script cgi.

    Pour t'assurer ajoute le callback error d'ajax afin d'identifier l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    success : function(text, statut){
       console.log("Retour d'ajax :"+text);//voir si le text=="success" ou pas
       .....          
    },
    error:function(erreur){
       alert("Erreur ajax :"+erreur);
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Points : 38
    Points
    38
    Par défaut j'essaie aujourd'hui !
    Merci pour ta réponse, j'essaie ce jour et reviens sur le forum.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Points : 38
    Points
    38
    Par défaut pas de changement
    Bonjour,

    Malgré les modification suggérées, aucun message d'erreur, je récupère toujours le "success" du "echo success" envoyé
    par le cgi mais aucune interprétation par le script ajax qui devrait lancer la fonction formsuccess() ...

  5. #5
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 410
    Points : 4 851
    Points
    4 851
    Par défaut
    Mais si tu fais le console.log dans le success pour voir le contenu du "text", tu vois quoi ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    success : function(text, statut){
       console.log("Retour d'ajax :"+text);//ça donne quoi cette ligne dans la console ?          
    }
    Le script cgi ne devrait pas avoir d'autres echo appart ceux de "success" et "error".

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Points : 38
    Points
    38
    Par défaut aprés tests
    Le script n'a effectivement que ces deux echos, "success" et "error".

    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    success : function(text, statut){
       console.log("Retour d'ajax :"+text);//ça donne quoi cette ligne dans la console ?          
    }
    Je n'obtiens rien.

    avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    function submitForm1(){
        // Initiate Variables With Form Content
        var selection = $("#selection").val();
        var cle1 = $("#cle1").val();
     
        $.ajax({
            type: "GET",
            url: "http://192.168.1.38:2929/cgi-bin/start.cgi",
            dataType : 'text',
            data: "selection=" + selection + "&cle1=" + cle1,
             success : function(text){
                if (text == "success"){
                    formSuccess();
                } else {
                    formError();
                    submitMSG(false,text);
                }
            }
        });
    }
    J'obtiens: "success" , mais la fonction formSuccess(); n'est pas exécutée. Je sèche.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Février 2020
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2020
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Bonjour,

    Découvrant votre post traitant du "Retour non interprété dans la méthode succès", je me permets de vous signaler qu'apparemment nous avons le même problème car dans mon post intitulé "Pas de retour dans ma fonction" , je décris qu'effectivement, malgré le retour de la fonction(data) qui affiche bien 'succès' avec le console.log , il ne passe ensuite jamais dans le test If data == 'succes'.... comme si , ce test n'était jamais interprété ...??

    Après avoir fait pas mal recherches sur le NET, je me suis retrouvé sur le site api.jquery.com (D'après ce que j'en ai compris , ce serait la doc officielle) et il précise à un endroit (après traduction en français, faut vraiment le trouver ;-)) ) je cite :

    "Le jqXHR.success(), jqXHR.error() et jqXHR.complete méthodes de rappel sont SUPPRIMES à PARTIR de jQUERY 3.0. Vous pouvez utiliser jqXHR.done (), jqXHR.fail() et jqXHR.always à la place "
    Je ne sais pas si c'est une piste... , il y a ensuite des exemples utilisant ces méthodes.
    En tout cas , je GALERE avec ça depuis une bonne semaine..
    Bonne journée.

  8. #8
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 410
    Points : 4 851
    Points
    4 851
    Par défaut
    Bonjour,

    Oui effectivement les callback success et error et always sont supprimés de jQuery 3.x, puis je pense que le dataType doit être "html" et pas "text".

    Donc si tu écris le code comme suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $.ajax({
            type: "GET",
            url: "http://192.168.1.38:2929/cgi-bin/start.cgi",
            //dataType : 'html',pas la peine de mettre ça, car dataType="html" par défaut
            data: "selection=" + selection + "&cle1=" + cle1
        })
        .done(function(text){
            if (text == "success"){
                    formSuccess();
            } else {
                    formError();
                    submitMSG(false,text);
            }
         })
        .fail(function(erreur){
            console.log("Erreur d'ajax :"+erreur);
        });
    toujours le même souci ?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Février 2020
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2020
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Merci encore pour ta réponse, j'avais vu cette remarque dans la doc, et si c'est la cause du problème, bonjour la GALERE depuis un moment !!!
    Effectivement, je pensais le réécrire de cette nouvelle manière en espérant que cette fois que cela fonctionne.
    Malheureusement, actuellement je n'ai pas la config nécessaire pour continuer mes tests (Surement en fin de semaine.)
    Bonne journée.

  10. #10
    Membre averti Avatar de Philcmoi
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 632
    Points : 405
    Points
    405
    Par défaut
    ajax est tres simple par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $.post('tableau.php', {
                    mail: $('#mail').val(),
                    motPasse: $('#motPasse').val()
                },  
                function(data){
     
                    if(data == 'Success'){
                         // Le membre est connecté. Ajoutons lui un message dans la page HTML.
     
    //                      $("#resultat").html("Vous avez été connecté avec succès !");
     
                         $(location).attr("href","bienvenue.php");
     
    //                 	window.open('bienvenue.php');
                    }
                    else{
                         // Le membre n'a pas été connecté. (data vaut ici "failed")
     
                         $("#resultat").html("Erreur lors de la connexion...");
                         clics=10;
                    }
     
                },
                'text'
             );
        });
    puis php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    $mail = "lhpp@gmail.com";
    $motDePasse = "007";
     
     
     
    if( isset($_POST['mail']) && isset($_POST['motPasse']) ){
        if($_POST['mail'] == $mail && $_POST['motPasse'] == $motDePasse){ // Si les infos correspondent...
            session_start();
     
            $_SESSION['email'] = $mail;
            $_SESSION['password'] = $motDePasse;
            $_SESSION['logged'] = 'connecte';
            echo "Success";
     
        }
        else{ // Sinon
            echo "Failed";
        }
    }

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Février 2020
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2020
    Messages : 66
    Points : 37
    Points
    37
    Par défaut
    Citation Envoyé par Toufik83
    ...
    Bonjour Toufik,

    Finalement mon problème est résolu !!, c'était au niveau de mon test, il fallait rajouter data.trim, apparemment la réponse du serveur envoie des caractères en trop (peut-être des parasites ??) , Bref, cela fonctionne , apparemment ce n'était pas lié aux méthodes obsolètes ( Pourtant ce que dit la doc JQuery)
    Merci encore pour tes conseils.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Mars 2020
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs

    Informations forums :
    Inscription : Mars 2020
    Messages : 62
    Points : 38
    Points
    38
    Par défaut no, cela ne fonctionne toujours pas
    bonjour toufik,

    Désolé de répondre si tardivement mais la période actuelle perturbe mes plannings.

    Non, cela ne fonctionne toujours pas. La fonction formsuccess n'est pas appelée.
    Elle fonctionne pourtant très bien dans un autre formulaire de contact.

    Ceci étant, l'environnement que j'utilise dans ce cas est différent: tout est embarqué sur une caméra IP
    avec Apache 2.4 et boa en petit serveur http qui reçoit les requêtes cgi sur le port tcp 2929 car je ne
    suis pas en mesure de les exécuter directement sur le serveur apache pour des raisons diverses, en particulier
    parce que le constructeur de cette caméra a patché apache et cloisonné certaines fonctionnalités.

    Merci quand même pour ton aide, bon dimanche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/09/2009, 12h03
  2. PHP non interprété dans un fichier XML
    Par Peyothe dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 03/06/2009, 20h43
  3. [Thread] appel de méthodes non-synchronized dans une méthode synchronized
    Par dr23fr dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 24/06/2008, 22h47
  4. HTML non interprété dans lien
    Par kangaxx dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 07/04/2008, 09h51
  5. [phpBB] Code PHP non interprété dans un thème subsilver
    Par killpilot dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 24/06/2007, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo