Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/09/2007, 13h49   #1
Membre du Club
 
Avatar de Nixar
 
Inscription : mars 2006
Messages : 295
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 295
Points : 50
Points : 50
Envoyer un message via MSN à Nixar
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 :
1
2
 
<select size = 1 name="Supplier" onchange="GetSupplierContact()"><option value="0">Please select</option>
Et la fonction :

Code :
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
Nixar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 14h14   #2
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 810
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 810
Points : 3 011
Points : 3 011
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 :
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 :
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"
	 %>
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 15h15   #3
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
Citation:
Javascript, c'est côté client et VbScript côté serveur.
En général, ceci est vrais et je suis d'accord
Code :
en sortir en appelant une page ASP dans ta fonction JavaScript
Je suis d'accod aussi
Citation:
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.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 15h39   #4
Membre confirmé
 
Avatar de Cpas2latarte
 
Inscription : janvier 2006
Messages : 238
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 238
Points : 217
Points : 217
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 :
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 :
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.)
Cpas2latarte est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2007, 15h14   #5
Membre expérimenté
 
Inscription : octobre 2004
Messages : 516
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : octobre 2004
Messages : 516
Points : 508
Points : 508
Envoyer un message via MSN à TekP@f
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 :
new Ajax.Request("page.asp")
TekP@f est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h45.


 
 
 
 
Partenaires

Hébergement Web