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

ASP Discussion :

Comment exécuter une fonction VBScript à partir d'un événement Javascript?


Sujet :

ASP

  1. #1
    Membre régulier Avatar de Nixar
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 302
    Points : 85
    Points
    85
    Par défaut Comment exécuter une fonction VBScript à partir d'un événement Javascript?
    Bonjour,
    Je n'ai pas trouvé la réponse à cette question dans les posts existants, peut-être ai-je mal regardé, si c'est le cas, redirigez-moi

    Je cherche à exécuter du code VBScript qui retourne le résultat d'une requête SQL, et ce à partir d'un événement "onchange" sur une combobox:

    Voici le code de la combo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <select size = 1 name="Supplier" onchange="GetSupplierContact()"><option value="0">Please select</option>
    Et la fonction :

    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
    <script language="JavaScript">
    <!--
    function GetSupplierContact()
    {
    	<% 
            ' CALL THE DATABASE WITH A STORED PROCEDURE	
    	Set dbConnection2 = Server.CreateObject("ADODB.Connection")
    	Set rs2 = Server.CreateObject("ADODB.Recordset")
    	Set cmd2 = Server.CreateObject("ADODB.Command")
    	dbConnection2.Open strConnection			
    	cmd2.CommandText = "spAgreementASPFunctions3"
    	Set cmd2.ActiveConnection = dbConnection2
    	cmd2.CommandType = adCmdStoredProc
    	cmd2.Parameters.Append cmd2.CreateParameter ("SupplierID", adVarChar, adParamInput, 255, 7860)
     
    	rs2 = cmd2.Execute		
    	Call ReportError
    	 %>
    }
    -->
    </script>
    Je fais ca car je n'ai pas trouvé comment lancer une fonction VBScript à partir de cet événement "onchange". Lors du changement de la valeur de la combo, mon code passe bien dans la fonction (J'ai fait afficher des "Alert('test')") mais aucune requête n'est lancée (le profileur SQL reste muet).

    Est-il possible d'appeler directement une fonction ASP VBScript sur cet événement "onchange"?

    Merci de vos réponses.

    Nixar

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Javascript, c'est côté client et VbScript côté serveur. Donc, à priori, pas possible.

    Par contre, tu peux peut-être t(en sortir en appelant une page ASP dans ta fonction JavaScript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <script language="JavaScript">
    <!--
    function GetSupplierContact()
    {
    document.location.href = 'GetSupplierContact.asp';
    }
    -->
    </script>

    Et ta page GetSupplierContact.asp

    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
     
    <% 
            ' CALL THE DATABASE WITH A STORED PROCEDURE	
    	Set dbConnection2 = Server.CreateObject("ADODB.Connection")
    	Set rs2 = Server.CreateObject("ADODB.Recordset")
    	Set cmd2 = Server.CreateObject("ADODB.Command")
    	dbConnection2.Open strConnection			
    	cmd2.CommandText = "spAgreementASPFunctions3"
    	Set cmd2.ActiveConnection = dbConnection2
    	cmd2.CommandType = adCmdStoredProc
    	cmd2.Parameters.Append cmd2.CreateParameter ("SupplierID", adVarChar, adParamInput, 255, 7860)
     
    	rs2 = cmd2.Execute		
    	Call ReportError
                 Response.redirect "PageAppelante.asp"
    	 %>

  3. #3
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    Javascript, c'est côté client et VbScript côté serveur.
    En général, ceci est vrais et je suis d'accord
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    en sortir en appelant une page ASP dans ta fonction JavaScript
    Je suis d'accod aussi
    Donc, à priori, pas possible.
    La je ne suis plus tout a fait d'accord. c'était vrais avant AJAX.

    maintenant avec AJAX c'est possible

    AJAX fournis un mécanisme qui permet de faire une requête (invisible) vers le serveur sans que la page principale ne se recharge.
    Donc on peut appeler une traitement coté serveur sans recharger la page principal
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  4. #4
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    Par défaut
    un petit exemple avec AJAX
    Ajax se compose donc de 2 pages
    une page qui soumet la requête ajax (celle avec le select) et une page qui fait le traitement (la requête)
    d'abord la page principale (avec le select)
    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
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
      <meta http-equiv="content-type" content="text/html; charset=windows-1250">
      <title></title>
      <script>
       function getAjaxObject(){
        var ao = null;
        if(window.XMLHttpRequest) // Firefox et autres
          ao = new XMLHttpRequest();
        else if(window.ActiveXObject){ // Internet Explorer
          try {
            ao = new ActiveXObject("Msxml2.XMLHTTP");
          } catch (e) {
            ao = new ActiveXObject("Microsoft.XMLHTTP");
          }
        } else { 
          ao = false;
        }
        return ao
      }
     
      function GetSupplierContact(){
        var ajaxObject = getAjaxObject()
        ajaxObject.onreadystatechange = function(){
          if(ajaxObject.readyState == 4 && ajaxObject.status == 200){
            alert("le résultat est : " + ajaxObject.responseText);
          }
        }
        ajaxObject.open("GET","page2.asp?Supplier=" + document.getElementById("Supplier").options[document.getElementById("Supplier").selectedIndex].value,true);
        ajaxObject.send(null);
      }  
     
     
      </script>
      </head>
      <body>
     
      <select size = 1 name="Supplier" id="Supplier" onchange="GetSupplierContact()">
        <option value="0">Please select</option>
        <option value="1">option 1</option>
      </select>
     
      </body>
    </html>
    la page qui fait la requête. elle doit être nomé page2.asp
    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
     
    <%
    Dim Supplier
    Dim Cnn
    Dim rs
    Dim Resultat
    Set Cnn = Server.CreateObject("Adodb.Connection")
    Set rs = Server.CreateObject("Adodb.recordset")
    ' obtention du parametre transmis (GET)
    Supplier = Request("Supplier")
     
    ' faire les traitements nécéssaires
    ' exemple une requête
    ' cnn.execute quelquechose .......
    '[...]
     
    ' fin : ecrire le résulalt
    ' cette écriture va déclencher un évènement JS client dans la page principale 
    Response.Write Resultat
    %>
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    522
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 522
    Points : 522
    Points
    522
    Par défaut
    En effet, l'Ajax permet maintenant de faire ce genre de trucs.
    Je m'en suis servi.
    Y'a un framework sympa que tu peux utiliser : scriptaculous
    Ca te permet d'appeler une page ASP à partir de JS.
    Genre ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new Ajax.Request("page.asp")

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/10/2009, 09h22
  2. Réponses: 4
    Dernier message: 04/05/2009, 16h33
  3. Réponses: 2
    Dernier message: 29/07/2008, 15h04
  4. Réponses: 2
    Dernier message: 16/07/2007, 16h04
  5. [Débutant]Comment exécuter une fonction tous les jours
    Par pseudomh dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 21/06/2006, 16h10

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