2010-11-05 3 views
1

Je fais un projet dans asp.net avec un service web. Mes services web et mon projet asp.net est séparé et mon projet asp.net ont une référence de mes services webappel WebService en javascript

J'utilise Visual Studio 2008 Framework 3.5 et mon service web est en vb.net

Je veux appeler les méthodes Web de mes services web en JavaScript

mon gestionnaire de script est déclaré

<asp:ScriptManager runat="server" ID="scriptManager" EnablePageMethods="true" > 
    <Services> 
      <asp:ServiceReference path="http://localhost:2931/ServiceCompas.asmx"/> 
    </Services> 
</asp:ScriptManager> 

les fonctions JavaScript

<script type="text/javascript"> 

function test() { 
      alert('test'); 
      Service1.Liste_Carte(Onsucced); 
     } 

     function Onsucced(resultat) { 
      alert('je suis passée'); 

     } 

    </script> 

service1 est la classe de mon Webservice

et j'appelle le test de fonction avec mon bouton

<input name="btnRecherche" class="btnRechercher" type="button" value="Rechercher un emplacement" onclick="test()" /> 

Le problème est: JavaScript dire Service1 n'est pas défini mais pourquoi? Quel est le problème?

+0

Nous ne pas l'esprit un peu le français ici, comme Tant que les bits importants sont en anglais. – DOK

+0

Point très mineur: la convention JavaScript est de mettre en majuscule le nom des fonctions que vous voulez utiliser comme constructeur, donc 'Onsucced' devrait être' onsucced' (ou, bien, 'onsuccess'). –

Répondre

0
<script src="WebService.asmx/js" type="text/javascript"></script> 

Depuis que je suis en train de résoudre le même problème, je peux voir cela pourrait manquer quelque part en fonction: http://weblogs.asp.net/dwahlin/archive/2006/12/28/understanding-asp-net-ajax-web-service-proxies.aspx (le lien ci-dessus)

qui dit, le Service.asmx/js ne peut pas être trouvé ... y a-t-il quelque chose de spécifique à faire pour qu'il soit généré?

EDIT, ça marche pour moi, voici le code:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <script src="WebService.asmx/js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     function callback(msg) { 
      alert(msg); 
     }; 

     function HelloWorld() { 
      WebService.HelloWorld(callback); 
     }; 
    </script> 
    <title></title> 
</head> 
<body> 
    <div id="test" onclick="HelloWorld();"> 
     click this 
    </div> 

    <form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server"> 
     <Services> 
     <asp:ServiceReference Path="~/WebService.asmx" /> 
     </Services> 
    </asp:ScriptManager> 
    </form> 
</body> 
</html> 
0

Ceci est probablement dû à des restrictions de sécurité inter-domaines (ports différents résultat dans différents domaines dans la mesure où le navigateur est concerné).

Il semble que vous utilisiez le serveur Web de développement. Lors du débogage local, vos projets distincts s'exécuteront sur différents ports qui produiront ce problème.

Pour les tests, vous pouvez essayer d'utiliser IIS et la création de vos applications avec des répertoires de haut niveau différents, afin qu'ils puissent les deux fonctionnent en même temps sur le port 80.