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

AJAX Discussion :

[AJAX] Transmettre résultat form dans fonction javascript


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut [AJAX] Transmettre résultat form dans fonction javascript
    Bonjour @ tous.

    Je viens de réer un formulaire qui génère une zone de liste au chargement de ma page.

    J'aimerais, après le choix de la valeur, et que l'utilisateur clique sur le bouton "search", que la valeur du choix dans la zone de liste soit transféré vers une foncition javascript.

    Si je met un bouton de type "submit", le problème c'est que ma page va, soit être redirigé, soit rechargée, mais je n'ai pas envie de cela. si je met un bouton de type "button" je ne vais pas pouvoir (ou du moins je ne sais pas faire) récupérer ma variable sous forme de $_POST.

    Voici le code, peut-être que ce sera plus clair :

    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
    20
    <?php
     
    $dbconnect = pg_connect("host=localhost port=5432 dbname=bdd user=postgres password=azerty");
    $requete = "select pot_num FROM poteau ORDER BY pot_num";
    $resultat = pg_query($dbconnect,$requete) or die(pg_errormessage());
     
    echo "<form id='newsearch' method='POST'>
    <table><tr><td>
    <select align='top' name='zl_choix' id='searchinput' maxlength='120'>";
     
    while ($row=pg_fetch_array($resultat)){
    print ("<br><option value='".$row["pot_num "]."'>".$row["pot_num"]);
    }
    echo"</select></td></tr>
    </table>
    <input type='button' value='search' id='searchbutton' onclick='test_search2(".htmlspecialchars($_POST["zl_choix"]).")'>
    </form>";
    pg_close($dbconnect);
     
    ?>

    En vous remerciant par avance de votre aide.

    Geo-x

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    Citation Envoyé par Geo-x Voir le message
    J'aimerais, après le choix de la valeur, et que l'utilisateur clique sur le bouton "search", que la valeur du choix dans la zone de liste soit transféré vers une foncition javascript.
    j'ai l'impression que ton code fait déjà ça, qu'est ce qui ne fonctionne pas ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Bonjour Mathieu.

    Pour être précis, dans ma focntion, je fais un alert() pour vérifier que ma variable est bien passée mais rien ne s'affiche.

    Voici ma fonction javascript, peut-être est-ce à cause d'elle que je n'arrive pas à récupérer l'information :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function test_search2(feature){
    alert (feature);
    }
    Geo-x

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick='test_search2(".htmlspecialchars($_POST["zl_choix"]).")'
    Imaginons que la valeur sélectionnée dans le select soit 'toto', dans ce cas, la ligne précédente deviendrait, en HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick='test_search2(toto)'
    ce qui n'est pas une syntaxe correcte puisque là, tu passes à la fonction la variable toto (qui n'existe vraisemblablement pas) alors que c'est en fait la chaine "toto" que tu souhaites transmettre.

    Mais surtout, j'ai l'impression que dans ton idée, lorsque tu cliques sur le bouton, JavaScript va être capable d'interpréter du PHP et transformer lui-même $_POST["zl_choix"] en une valeur.
    Autant te prévenir tout de suite, JavaScript ne sait pas interpréter le PHP.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Bonjour Bovino.

    En effet, mon objectif est de passer la valeur de la zone de liste dans mon javascript, pour ensuite faire une "requête" de recherche sur les objets contenus dans ma page principal (à savoir des objets géométriques en lien avec la bibliothèque javascript OpenLayers).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function test_search2(val){
    var theFeature = vectorLayer.getSource().forEachFeature(function(feature) {
      if (feature.get('field') == 'val') {
        return feature;  // the feature!
      }
    });
    }
    Mais alors là, peut-être que je m'y prend comme un pied ...

    Du coup, l'une des solutions serait peut-être de récupérer la valeur dans une variable en amont et de transmettre cette variable dans javascript du style :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $var = htmlspecialchars($_POST["zl_choix"]);

    Et plus loin

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type='button' value='search' id='searchbutton' onclick='test_search2(".$var.")'>";

    Geo-x

  6. #6
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 672
    Par défaut
    le "onclick" sert juste à signaler le clic donc il suffit de mettre un appel comme ça :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" onclick="test_search2()"/>
    et ensuite c'est dans la fonction que tu cherches la valeur choisie dans le menu déroulant.
    ça peut se faire comme ça avec jQuery par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function test_search2(){
    	var valeurChoix = jQuery("#searchinput").value;
    	alert(valeurChoix);
    }

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

Discussions similaires

  1. Utiliser le résultat d'un fichier php dans fonction javascript
    Par theshark85 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/07/2009, 12h07
  2. requete sql dans fonction javascript
    Par griese dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 30/06/2006, 09h44
  3. submit form dans fonction JScript, Erreur :(
    Par mbk-w dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 22/05/2006, 12h23
  4. Réponses: 2
    Dernier message: 16/11/2005, 10h49
  5. Réponses: 5
    Dernier message: 13/08/2004, 15h40

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