function btnEnviar_onclick() {
var resultado = Service1.HelloWorld(document.getElementById("txtNombre").value,
OnComplete, OnTimeOut, OnError);
return true;
}
function OnComplete(arg) {
alert(arg);
}
function OnTimeOut() {
alert("Time is up");
}
function OnError() {
alert("Error");
}
El problema es que estoy consiguiendo el error "Service1 is not define". Existe cinco cosas importantes que hay que tomar en cuenta:
1º - El web service debe estar corriendo, ¡obvio!
2º - El nombre del directorio donde está el web service debe ser utilizado en el momento de instanciar o llamar a un método del web service.
3º - Por supuesto, también es importante agregar el control ScripManager a la página *.aspx y dentro de ese control agregar un ServiceReference.
4º Si aun no aparece, entonces revizar el código Javascript y verificar que los nombres de los métodos OnComplete, OnTimeOut y OnError estén bien escritos en todo lado donde se vayan a usar. Recordemos que Javascript es sencible a mayúsculas y minúsculas.
5º Si se están usando WebService estáticos, el método debe ser declarado con la palabra reservada Shared (VB) o static (C#).
6º Puede ocurrir que el web service es llamado pero se lanza una excepción indicando que no encuentra al web service y por más que intente hacerlo funcionar, no ocurre. Un caso así ocurrió cuando se ejecutaba una aplicación en una máquina virtual. La solución fue simplemente reiniciar la máquina virtual. Sí por supuesto, dicha solición se aplicó casí después de tres horas después de tantos intentos infructuosos, jaja!
7º Existe un caso especial, pero ocurre solo si utilizamos Web Services Estáticos.El mensaje de error equivalente con el que podemos toparnos es el siguiente:
Error: Sys.Net.WebServiceFailedException: The server
method 'StaticMethod' failed with the following error:
Archivo de origen: http://localhost:10258/WebSite2
/ScriptResource.axd?d=58xHtP0kV6y42p9jtK_IzqsHQXnRb-
2ldpNeZlGfSlZEESQ9GeHLihiyxiP1&t=d2c0a1c Línea: 5488
Eso es por una única razón. Se produce si un botón que se
supone llama a una función de JS y la función de JS llama
a una función stática en el lado del servidor, es muy
probable que la función sí se pueda ejecutar (la del lado
del servidor) pero la respuesta de retorno va a fallar ya
que el botón hace postback haciendo que el otro mensaje
que se había enviado, falle totalemente.
Y continuando con la solución para el problema anterior del Web Service, lo que hay que hacer es llamar al web service utilizando el nombre del directorio seguido del nombre de la clase web service separado con punto quedando ahora:var resultado = SimpleWebService.Service1.HelloWorld.....;
Otro punto importante es que debe existir la siguiente línea de código en el encabezado
de la clase:
<System.Web.Script.Services.ScriptService()> _
No hay comentarios:
Publicar un comentario