Se você usar javascript para chamar o webservice em .net, precisará usar o comportamento do webservice. A seguir está um exemplo para explicar, é relativamente simples
1. Primeiro, crie um webservice, como
<%@ WebService Language="C#" class=MyMath %>
usando o sistema;
usando System.Web.Services;
classe pública MyMath {
[WebMethod]
público int adicionar(int a, int b)
{
retornar a + b;
}
[WebMethod]
público int subtrair(int a, int b)
{
retorne a - b;
}
}
Em seguida, publique-o e obtenha seu wsdl primeiro.
2. Primeiro, precisamos baixar o arquivo webbehavior.htc (você pode acessar http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp .)
Baixe-o e coloque-o no diretório atual do seu web. Depois, na página onde deseja chamar o webserice, modifique-o da seguinte forma.
<corpo>
<div id="addservice" style="behavior:url(webservice.htc)"></div>
</body>
Aqui nomeamos o div id com algo significativo e especificamos o estilo como comportamento do serviço da web. Em seguida, precisamos escrever javascript para chamar o webserice:
Primeiro, chamamos seu wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath ");
Use id.useService (caminho WSDLL, método de nomenclatura simples);
O id que definimos antes foi addservice e, para facilitar a chamada do cliente, nomeamos-o MyMath. Para garantir que o webserice possa ser chamado corretamente, o javascript que trata as chamadas do webservice deve ser carregado imediatamente no evento onload no corpo, conforme segue
<linguagem script="JavaScript">
função iniciar()
{
addservice.useService(" http://localhost/services/math.asmx?WSDL","MyMath ");
</script>
<body onload="init()">
<div id="serviço" style="comportamento:url(webservice.htc)">
</div>
</body>
Acima, através do comportamento do webservice, primeiro obtemos o wsdl que retorna o webservice. Em seguida, temos que fazer uma chamada. O formato da chamada é o seguinte: iCallID = id.FriendlyName.callService([CallbackHandler,] "MethodName" , Param1, Param2, ..);
Aqui id é o id que definimos no div e FridndbyName é o nome que acabamos de nomear para o aspecto, aqui está MyMath e CallbackHandler é o nome do processo da função de retorno de chamada. Se não houver configuração, o padrão é usar onresult. para chamá-lo, o método é usado para processamento, que será discutido abaixo, e param1, param2, etc. referem-se aos parâmetros de entrada, como:
<linguagem SCRIPT="JavaScript">
// Todas essas variáveis devem ser globais,
// porque eles são usados tanto em init() quanto em onresult().
var iCallID = 0;
varintA = 5;
var intB = 6;
função iniciar()
{
// Estabelece o nome amigável "MyMath" para o WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// O método a seguir não especifica um manipulador de retorno de chamada, então onWSresult() é usado
iCallID = service.MyMath.callService("adicionar", intA, intB);
}
função onWSresult()
{
// se houver um erro e a chamada veio de call() em init()
if((event.result.error)&&(iCallID==event.result.id))
{
// Extrai as informações de erro das propriedades event.result.errorDetail
var xfaultcode = event.result.errorDetail.code;
var xfaultstring = event.result.errorDetail.string;
var xfaultsoap = event.result.errorDetail.raw;
// Adicione código para lidar com códigos de erro específicos aqui
}
// se não houve erro e a chamada veio de call() em init()
senão if((!event.result.error) && (iCallID == event.result.id))
{
//Mostre a aritmética!
alerta(intA + ' + ' + intB + ' = ' + evento.resultado.valor);
}
outro
{
alert("Outra coisa disparou o evento!");
}
}
</SCRIPT>
<body onload="init()">
<div id="service" style="behavior:url(webservice.htc)" onresult="onWSresult()">
</div>
</body>
Observe que se você usar o método onresult para retornar, deverá especificar o método de processamento no onresult da parte div. Aqui, o método onWsresult() é usado, no qual as informações retornadas são usadas para determinar se há um erro. Se ocorrer um erro, ele será exibido.
Se retornos de chamada forem usados, proceda da seguinte forma
<linguagem SCRIPT="JavaScript">
// Todas essas variáveis devem ser globais,
// porque eles são usados tanto em init() quanto em onResult().
var iCallID = 0;
varintA = 5;
var intB = 6;
função iniciar()
{
// Estabelece o nome amigável "MyMath" para o WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// O seguinte usa um manipulador de retorno de chamada chamado "mathResults"
iCallID = service.MyMath.callService(mathResults, "adicionar", intA, intB);
}
função mathResults(resultado)
{
// se houver um erro e a chamada veio de call() em init()
if(resultado.erro)
{
// Extrai as informações de erro das propriedades event.result.errorDetail
var xfaultcode = result.errorDetail.code;
var xfaultstring = resultado.errorDetail.string;
var xfaultsoap = result.errorDetail.raw;
// Adicione código para lidar com códigos de erro específicos aqui
}
//se não houve erro
outro
{
//Mostra a aritmética
alerta(intA + ' + ' + intB + " = " + resultado.valor);
}
}
</SCRIPT>
<body onload="init()">
<div id="serviço" style="comportamento:url(webservice.htc)">
</div>
</body>