Recentemente, um amigo próximo a mim estava trabalhando em um projeto e um dos requisitos do módulo exigia o uso de js para chamar o webService. Ele me pediu para ajudá-lo a pensar em uma solução, porque eu nunca tinha feito isso antes. Após cerca de uma hora de testes, funcionou. Achei essas coisas tão simples depois de anotá-las. No começo pensei que era complicado. Compartilhe o código escrito durante o teste, espero que seja útil para todos.
Conteúdo do arquivo WebService
código
usando System;usando System.Web;usando System.Collections;usando System.Collections.Generic;usando System.Web.Services;usando System.Web.Services.Protocols;usando System.Web.UI.MobileControls;/// <summary >/// Descrição resumida de JsWebService /// </summary>[WebService(Namespace = " http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.Web.Script.Services .ScriptService] public class JsWebService : System.Web.Services.WebService{ public JsWebService() { //Se estiver usando componentes projetados, remova o comentário da seguinte linha //InitializeComponent() } [WebMethod] public string GetString() { return "; GetString"; } [WebMethod] public string GetString(string nome) { return string.Format("{0}Bem-vindo!", nome); } [WebMethod] public List<string> GetList() { List< string> listStr = new List<string>(); for (int i = 0; i < 10; i++) { listStr.Add("teste" + i } return listStr } [WebMethod] public List<JsWebServiceObject> GetObjectList() { List<JsWebServiceObject> objs = new List<JsWebServiceObject>(); for (int i = 0; i < 10; i++) { JsWebServiceObject obj = new JsWebServiceObject("nome" + i, i + 20); ); } return objetos; }}
O código da página aspx que chama WebService
código
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns=" http://www.w3.org/1999/xhtml"><head runat="server"> < title>Js chama WebService</title> <script type="text/javascript"> function GetString() { JsWebService.GetString(GetStringCallBack); //Chame o método no WebService e defina a função de retorno de chamada} function GetStringCallBack(result) { alert(result); } function GetStringParam(name) { JsWebService.GetString(name,GetStringParamCallBack); //Chame o método no WebService e defina a função de retorno de chamada. } function GetStringParamCallBack(resultado) { alerta(resultado } function GetList() { JsWebService.GetList(GetListCallBack } function GetListCallBack(resultado) { if(result.length!=0) { for(var i=0;i); <result.length;i++) { document.getElementById("contentDivGetList").innerHTML += resultado[i] + "<br/>"; função GetObjectList() { JsWebService.GetObjectList(GetObjectListCallBack } função GetObjectListCallBack); (resultado) { if(resultado.comprimento!=0) { for(var i=0;i<resultado.comprimento;i++) { document.getElementById("contentDivGetObjectList").innerHTML += "Nome:" + resultado[i ].Nome + "Idade:" + resultado[i].Idade + "<br/>"; <asp:ScriptManager ID="smJs" runat="server" > <Serviços> <asp:ServiceReference Path="WebService/JsWebService.asmx" /> </Services> </asp:ScriptManager> <div> <input type= "button" name="btnJsWebService" value="GetString" onclick="GetString()" /> <input type="button" name="butJsWebService" value="GetList" onclick="GetList()" /> <input type="button" name="butJsWebService" value="GetObjectList" onclick="GetObjectList()" /> <input type="button" name="butJsWebService" value="GetStringParam" onclick="GetStringParam('js chama WebService ')" /> <div id="contentDivGetList"></div> <div id="contentDivGetObjectList"></div> </div> </form></body></html