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

JavaScript Discussion :

[AJAX]probleme HTTPRequest


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut [AJAX]probleme HTTPRequest
    Bonjour,

    J'ai un probleme avec un script php utilisant HTTPRequest:

    voici mon code javascript:
    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
    <script type="text/javascript" language="javascript">
     
        var http_request = false;
     
        function makeRequest(url) {
     
            http_request = false;
     
            if (window.XMLHttpRequest) { // Mozilla, Safari,...
                http_request = new XMLHttpRequest();
                if (http_request.overrideMimeType) {
                    http_request.overrideMimeType('text/xml');
                }
            } else if (window.ActiveXObject) { // IE
                try {
                    http_request = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
     
            if (!http_request) {
                alert('Abandon :( Impossible de créer une instance XMLHTTP');
                return false;
            }
            http_request.onreadystatechange = alertContents;
            http_request.open('GET', url, true);
            http_request.send(null);
     
        }
     
        function alertContents() {
     
            if (http_request.readyState == 4) {
                if (http_request.status == 200) {
                    alert(http_request.responseText);
                } else {
                    alert('Un problème est survenu avec la requête.');
                }
            }
     
        }
    </script>
    et mon appel:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <script type="text/javascript">
    			Droppables.add("<?php print $id_article;?>", {onDrop:function(element,dropon){makeRequest("tous2.php?idprec="+idsource+"&idnouv=<?php print $id_article; ?>&id_dest=<?php print $id_rubrique; ?>&id_bouge="+idparent);}})
    			</script>
    Lors de l'appel qui s'effectue sur un drag and drop, un message javascript s'ouvre avec lecode html de ma page dedans

    pouvez vous m'aidez?

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben eneleve ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(http_request.responseText);
    ....

  3. #3
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Points : 82
    Points
    82
    Par défaut
    remplace alert par eval...

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    ça ne m'affiche plus le message merci

    par contre, je vois les modifications seulement si j'actualise ma page, , y- a t'il un moyen de l'actualiser dynamiquement?

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011
    Par défaut
    ben en mettant le code qui l'actualise a la place du alert que tu viens d'enlever

    c est a cet endroit que tu doit indiquer ce qu il se passe quand tu reçoit la réponse du serveur

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    oui mais justement, je ne veux pas qu'il actualise la page, je veux qu'il la mette a jour en direct.

    est-ce possible?

  7. #7
    Membre éclairé
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Points : 777
    Points
    777
    Par défaut
    Citation Envoyé par GTJuanpablo
    ça ne m'affiche plus le message merci

    par contre, je vois les modifications seulement si j'actualise ma page, , y- a t'il un moyen de l'actualiser dynamiquement?
    Je te recommende de lire des tutoriels sur le javascript. La première chose a faire avant de commencer un language/essayer de le comprendre est au moins de savoir les base comme le alert.

    De cette facon, tu aurais trouvé immédiatement que la fonction pour faire afficher un message en javascript est alert()

  8. #8
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Points : 82
    Points
    82
    Par défaut
    met un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setTimeout("eval(http_request.responseText)", 3000);
    ce qui réactualise toutes les 3 secondes (3000ms)

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Points : 5 011
    Points
    5 011

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par shwin
    Citation Envoyé par GTJuanpablo
    ça ne m'affiche plus le message merci

    par contre, je vois les modifications seulement si j'actualise ma page, , y- a t'il un moyen de l'actualiser dynamiquement?
    Je te recommende de lire des tutoriels sur le javascript. La première chose a faire avant de commencer un language/essayer de le comprendre est au moins de savoir les base comme le alert.

    De cette facon, tu aurais trouvé immédiatement que la fonction pour faire afficher un message en javascript est alert()
    c une simple étourderie et je n'ai pas pensé a relire le code mais je cherchais une erreur dans mon appel.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par shadowbob
    met un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    setTimeout("eval(http_request.responseText)", 3000);
    ce qui réactualise toutes les 3 secondes (3000ms)
    justement ma question est que je veux savoir si on peut mettre a jour la page sans l'actualiser?

  12. #12
    Membre régulier
    Inscrit en
    Juin 2004
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 116
    Points : 82
    Points
    82
    Par défaut
    tu ne réactualise pas la page mais simplement ton code... sinon je ne croit pas que cela soit possible car ton client peut pas deviner qu'il y as eu une modification niveau serveur... à moins que je me trompe.
    Je ne suis pas un expert en javascript

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    Citation Envoyé par shadowbob
    tu ne réactualise pas la page mais simplement ton code... sinon je ne croit pas que cela soit possible car ton client peut pas deviner qu'il y as eu une modification niveau serveur... à moins que je me trompe.
    Je ne suis pas un expert en javascript
    ok merci

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    j'ai modifié mon script comme il n'était pas adapté, maintenant je dispose de plusieurs <li> que je peux classé, lorsque j'en drag une sur une autre il se crée un décalage et elle se met entre cette derniere et la suivante.

    J'aimerais que lorsque je lache le bouton de ma souris, je puisse recuperer pour mon makerequest les noms des 2 <li> situées au dessus et en dessous

    il y a t'il une solution?

  15. #15
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Personnellement je ne fais jamais de eval d'un code que je n'ai produit sur place.

    je ne sais pas ce que tu récupère dans ta réponse. mais l'avantage d'AJAX c'est justement de ne pas embarquer de code. mais du XML

    mon serveur retourne toujours du XML
    XMLHTTPRequest te retourne un objet DOM
    il suffit de traiter c'est objet pour en faire ce que l'on veux dans la page.

    si je veux qu'une variable soit positionné par le serveur je ne produit pas de JS côté serveur mais du XML qui contient la valeur c'est au traitement de la réponse que j'affecte la variable. si je veux alimenter un élément de ma page avec le contenus du retour j'applique une feuille de style sur le dom reçus et je copie les branche dans ma page.

    bref jamais un seul code ne transite entre le serveur et le client.

    pas de risque de planter la chose avec du code défectueux ou usurpé
    et indépendance entre le serveur et le client. si demain je décide de faire une petite appli java chargée par JNLP elle pourra travailler avec mon serveur sans changement.

    de même si je décide de changer de techno côté serveur il me suffira de produire le même XML

    mon client peut être une appli VBSCRIPT ou VBA ou C++ elle n'aura pas besoin d'embarquer javascript.

    je suis aussi moins dépendant du navigateur utilisé.
    le le handler de réception est multi navigateur peut importe ce qui transite entre le serveur et le client ce sera toujours multi navigateur.

    A+JYT

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    merci de ta réponse, mais je ne peux utiliser xml

    quelqu'un peut m'aider?

    j'ai modifié mon script comme il n'était pas adapté, maintenant je dispose de plusieurs <li> que je peux classé, lorsque j'en drag une sur une autre il se crée un décalage et elle se met entre cette derniere et la suivante.

    J'aimerais que lorsque je lache le bouton de ma souris, je puisse recuperer pour mon makerequest les noms des 2 <li> situées au dessus et en dessous

    il y a t'il une solution?
    merci d'avance

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    arf j'ai essayé plein de méthodes mais rien ne marche...

    n'y aurait-il pas un moyen lors de l'éxécution d'une requete httprequest, d'actualiser le select que je fais?
    je m'explique:

    je fais un select pour afficher mes catégories, lors du drag and drop, je peux dépacer une catégorie après une autre et le httprequest fonctionne, mes requetes update s'exécutent(car je rappel ma page). Seulement mon affichage ne change pas, pourtant il dépend d'un select que je rééxécute!

    N'y a t-il pas un moyen que mon select se mettent a jour et ainsi ma liste de catégories?

    pour cette affichage dynamique peut etre utiliser le javascript?

    merci d'avance pour votre aide

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    si je fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Droppables.add("<?php print $idtwo;?>", {onDrop:function(element,dropon){makeRequest("axome_tous2.php?idprec="+idsource+"&idnouv=<?php print $idtwo; ?>&id_dest=<?php print $id_parent; ?>&id_bouge="+idparent);document.write(http_request.responseText);}})
    ça ne marche pas, est-ce une erreur de syntaxe ou tout simplement pas la bonne méthode pour ce que je chercher a faire?

    edit: non c pas ça, quelqu'un a une idée?

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 194
    Points : 83
    Points
    83
    Par défaut
    personne?

  20. #20
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    je vais encore te donner la même réponse

    utilise le dom
    je ne sais pas ce que tu récupère dans ta réponse vu que t ne veux pas le donner.

    mais dans ton html tu met un id sur le tag dans lequel tu veux placer ta réponse
    tu fais un obj = getElementById('monid') pour le récupéré dans ton javascript
    ensuite tu créé les tag que tu veux avec le dom et tu hai
    obj.appendElement(...) l'élément que tu as crée.

    si ton server te retourne "<li>toto</li><li>tata</li>"
    il suffit à ton javascript de parcourir reponseXML et tu récupère directement tes LI
    tu n'as alors rien à créer mais juste à faire des appendElement
    la seule contrainte ton serveur doit ajouter un tag devant et derrière ta réponse
    "<reponse><li>toto</li><li>tata</li></reponse>"


    A+JYT

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

Discussions similaires

  1. [AJAX] fonctionnement Ajax probleme
    Par Tempotpo dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/06/2006, 15h00
  2. [AJAX] probleme de récupération de donnée par GET
    Par Death83 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 13/06/2006, 17h00
  3. [Ajax] probleme pour parser une reponse
    Par zola dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 04/05/2006, 17h35
  4. Réponses: 4
    Dernier message: 19/04/2006, 16h23
  5. [AJAX] probleme avec innerhtml
    Par GTJuanpablo dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 19/03/2006, 13h21

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