Si usa javascript para llamar al servicio web en .net, debe usar el comportamiento del servicio web. El siguiente es un ejemplo para explicar, es relativamente simple
1. Primero, cree un servicio web, como
<%@ WebService Language="C#" class=MyMath %>
usando Sistema;
utilizando System.Web.Services;
clase pública MyMath {
[Método web]
público int agregar(int a, int b)
{
devolver a + b;
}
[Método web]
resta int pública (int a, int b)
{
devolver a-b;
}
}
Luego publíquelo y obtenga su wsdl primero.
2. Primero, debemos descargar el archivo webbehavior.htc (puede ir a http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp ).
Descárgalo y colócalo en el directorio actual de tu web. Luego en la página donde quieras llamar al servicio web, modifícalo de la siguiente manera.
<cuerpo>
<div id="addservice" style="comportamiento:url(webservice.htc)"></div>
</cuerpo>
Aquí le damos al div id un nombre significativo y especificamos el estilo como comportamiento del servicio web. A continuación, necesitamos escribir javascript para llamar al servicio web:
Primero, lo llamamos wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath ");
Utilice id.useService (ruta WSDLL, método de denominación simple);
La identificación que configuramos antes fue addservice y, para que al cliente le resulte más fácil llamarla, la llamamos MyMath. Para garantizar que se pueda llamar correctamente al servicio web, el javascript que maneja las llamadas al servicio web debe cargarse inmediatamente en el evento de carga en el cuerpo, de la siguiente manera
<lenguaje de escritura="JavaScript">
función inicio()
{
addservice.useService(" http://localhost/services/math.asmx?WSDL","MyMath ");
</script>
<cuerpo onload="init()">
<div id="servicio" estilo="comportamiento:url(webservice.htc)">
</div>
</cuerpo>
En lo anterior, a través del comportamiento del servicio web, primero obtenemos el wsdl que devuelve el servicio web. Luego, tenemos que realizar una llamada. El formato de la llamada es el siguiente: iCallID = id.FriendlyName.callService([CallbackHandler,] "MethodName" , Parámetro1, Parámetro2, ..);
Aquí id es la identificación que configuramos en el div, y FridndbyName es el nombre que acabamos de nombrar para el aspecto, aquí está MyMath y CallbackHandler es el nombre del proceso de la función de devolución de llamada. Si no hay ninguna configuración, el valor predeterminado es usar onresult. Para llamarlo, el método se utiliza para el procesamiento, que se analizará a continuación, y param1, param2, etc. se refieren a los parámetros entrantes, como:
<lenguaje SCRIPT="JavaScript">
// Todas estas variables deben ser globales,
// porque se usan tanto en init() como en onresult().
var iCallID = 0;
varianteA = 5;
var intB = 6;
función inicio()
{
// Establece el nombre descriptivo "MyMath" para WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// El siguiente método no especifica un controlador de devolución de llamada, por lo que se utiliza onWSresult()
iCallID = service.MyMath.callService("agregar", intA, intB);
}
función enWSresult()
{
// si hay un error y la llamada proviene de call() en init()
if((evento.resultado.error)&&(iCallID==evento.resultado.id))
{
// Extrae la información del error de las propiedades event.result.errorDetail
var xfaultcode = event.result.errorDetail.code;
var xfaultstring = event.result.errorDetail.string;
var xfaultsoap = event.result.errorDetail.raw;
// Agregue código para manejar códigos de error específicos aquí
}
// si no hubo ningún error y la llamada provino de call() en init()
else if((!event.result.error) && (iCallID == evento.result.id))
{
// ¡Muestra la aritmética!
alerta(intA + ' + ' + intB + ' = ' + evento.resultado.valor);
}
demás
{
alert("¡Algo más disparó el evento!");
}
}
</SCRIPT>
<cuerpo onload="init()">
<div id="servicio" estilo="comportamiento:url(webservice.htc)" onresult="onWSresult()">
</div>
</cuerpo>
Tenga en cuenta que si usa el método onresult para regresar, debe especificar el método de procesamiento en el resultado de la parte div. Aquí se usa el método onWsresult (), que usa la información devuelta para determinar si hay un error. Si se produce un error, se muestra.
Si se utilizan devoluciones de llamada, proceda de la siguiente manera
<lenguaje SCRIPT="JavaScript">
// Todas estas variables deben ser globales,
// porque se utilizan tanto en init() como en onResult().
var iCallID = 0;
varianteA = 5;
var intB = 6;
función inicio()
{
// Establece el nombre descriptivo "MyMath" para WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// Lo siguiente utiliza un controlador de devolución de llamada llamado "mathResults"
iCallID = service.MyMath.callService(mathResults, "agregar", intA, intB);
}
función mathResults(resultado)
{
// si hay un error y la llamada proviene de call() en init()
si (resultado.error)
{
// Extrae la información del error de las propiedades event.result.errorDetail
var xfaultcode = resultado.errorDetail.code;
var xfaultstring = resultado.errorDetail.string;
var xfaultsoap = resultado.errorDetail.raw;
// Agregue código para manejar códigos de error específicos aquí
}
// si no hubo ningún error
demás
{
// Muestra la aritmética
alerta(intA + ' + ' + intB + " = " + resultado.valor);
}
}
</SCRIPT>
<cuerpo onload="init()">
<div id="servicio" estilo="comportamiento:url(webservice.htc)">
</div>
</cuerpo>