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 :

Récupérer la sortie d'un CGI avec javascript [AJAX]


Sujet :

jQuery

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut Récupérer la sortie d'un CGI avec javascript
    Bonjour tout le monde,
    je vais essayer d'être clair:
    je cherche à faire un programme C qui génère une page HTML, la renvoie au navigateur et l'affiche dans un div ou une frame peu importe, le but étant de ne pas écraser tout le contenu de la page HTML déjà ouverte.
    J'ai pensé qu'un moyen de faire cela pourrait être d'envoyer la sortie du programme CGI à javascript qui écrirait le contenu dans un div.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(document).ready(function() {
        $('#button_ajax').click(function() {
            var result=$.post("http://localhost/cgi-bin/test_cgi");
            result.done(function(data) { 
                $("#ajax").empty().append(data);
            });
        });
    });
    J'ai également essayé différentes façons sans succès.
    J'imaginais que $.post(url) me renvoyait la sortie du programme, mais il semble que c'est un peu plus compliqué que ca.
    J'ai essayé de m'inspirer des exemples ici
    Apparement la fonction post(url) renvoie un objet jqXHR qui est un objet "deferred"
    Pouvez-vous m'orienter d'avantage? Que pensez-vous qui ne va pas?

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour,
    as tu essayé un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $(document).ready(function () {
      $('#button_ajax').click(function () {
        $.post("http://localhost/cgi-bin/test_cgi", function (data) {
          alert("success");
        })
        .done(function (data) {
          $("#ajax").empty().append(data);
        });
      });
    });
    comme dans l’exemple cité

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut
    Je viens d'essayer, cela ne m'ouvre même pas une pop up quand je clique.
    Apache de son côté me donne dans les logs:
    127.0.0.1 - - [19/May/2013:11:20:19 +0200] "POST /cgi-bin/test_cgi HTTP/1.1" 200 682
    on a bien consulté le test_cgi et pas d'erreur à ce niveau.
    Je me suis renseigné sur les objets jqXHR que nous renvoie la fonction $.post(), ce que j'en ai compris c'est qu'il y a une variable responseText et responseXML qui est sensé contenir les données "brutes", j'ai donc essayé en remplacant append(data) par append(data.responseText), même résultat.

    The text and xml types return the data with no processing. The data is simply passed on to the success handler, either through the responseText or responseXML property of the jqXHR object, respectively.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(document).ready(function() {
        $('#button_ajax').click(function() {
            alert("success1");
            $.post("http://localhost/cgi-bin/test_cgi", "text").done(function() {
                alert("success2");
            });
        });
    });
    Cela m'affiche "success1" mais pas "success2", il y a bien une réponse (positive) du serveur je sais pas du tout ce qui se passe… le message passe trop près d'un trou noir.
    J'ai essayé ceci dans le doute et sans grand espoir

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(document).ready(function() {
        $('#button_ajax').click(function() {
            alert("success1");
            $.post("http://localhost/cgi-bin/test_cgi", function() {
                alert("success2");
            },"text");
        });
    });
    J'attends avec impatience l'avis de quelqu'un de plus expérimenté, parce que je vois vraiment pas.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut
    Toujours pas trouvé…
    Comment faites-vous quand vous êtes confronté à ce genre de problème?
    Le debugger de chromium me donne
    XMLHttpRequest cannot load http://localhost/cgi-bin/test_cgi. Origin null is not allowed by Access-Control-Allow-Origin.
    j'ai lu que c'était dû à, par securité, une limitation dépendant de la politique du navigateur

    le debugger de firefox, lui affiche cela
    [21:55:58,238] POST http://localhost/cgi-bin/test_cgi [HTTP/1.1 200 OK 1ms]
    , donc j'en conclurais qu'il n'y a pas de souci, mais le deuxième pop up "success2" ne s'ouvre pas.

    Rien qui me donne de raison précise du pourquoi il fait pas ce qu'il est sensé faire.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 18
    Par défaut
    Résolu… c'était parce que mon fichier html n'était pas dans un répertoire apache

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

Discussions similaires

  1. Récupérer une marge d'un div avec JavaScript en %
    Par Adrien88390 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 13/04/2014, 12h01
  2. Réponses: 2
    Dernier message: 16/11/2009, 13h58
  3. [TinyMCE] Comment récupérer la valeur d'un textarea avec javascript ?
    Par rasdri dans le forum Bibliothèques & Frameworks
    Réponses: 5
    Dernier message: 29/11/2007, 19h53
  4. Réponses: 0
    Dernier message: 25/10/2007, 13h40
  5. récupérer valeur d'un dropdownliste avec javascript
    Par Tyler Durden dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/07/2007, 21h47

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