Recientemente, un amigo a mi alrededor estaba trabajando en un proyecto y uno de los requisitos del módulo requería usar js para llamar a webService. Me pidió que lo ayudara a pensar en una solución, porque nunca había hecho esto antes. Después de aproximadamente una hora de pruebas, funcionó. Encontré que esto era muy simple después de que lo escribí. Al principio pensé que era complicado. Comparta el código escrito durante la prueba, espero que sea útil para todos.
Contenido del archivo 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;/// <resumen >/// Descripción 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() { //Si utiliza componentes diseñados, descomente la siguiente línea //InitializeComponent() } [WebMethod] public string GetString() { return "; GetString"; } [WebMethod] cadena pública GetString(nombre de cadena) { return cadena.Format("{0}¡Bienvenido!", nombre); } [WebMethod] lista pública<cadena> GetList() { Lista<cadena> listStr = nueva Lista<cadena>(); para (int i = 0; i < 10; i++) { listStr.Add("prueba" + i } return listStr } [WebMethod] public List<JsWebServiceObject> GetObjectList() { Lista<JsWebServiceObject> objs = nueva Lista<JsWebServiceObject>(); for (int i = 0; i < 10; i++) { JsWebServiceObject obj = nuevo JsWebServiceObject("nombre" + i, i + 20); ); } devolver objetos; }}
El código de la página aspx que llama a WebService
código
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//ES" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"><html xmlns=" http://www.w3.org/1999/xhtml"><head runat="servidor"> < title>Js llama a WebService</title> <script type="text/javascript"> function GetString() { JsWebService.GetString(GetStringCallBack); //Llama al método en WebService y configura la función de devolución de llamada} function GetStringCallBack(resultado) { alert(result); } function GetStringParam(name) { JsWebService.GetString(name,GetStringParamCallBack); // Llame al método en WebService y configure la función de devolución de llamada. Si hay parámetros en este método, agregue este parámetro antes de la función de devolución de llamada. } función GetStringParamCallBack(resultado) { alerta(resultado); función GetList() { JsWebService.GetList(GetListCallBack } función GetListCallBack(resultado) { if(result.length!=0) { for(var i=0;i <resultado.length;i++) { document.getElementById("contentDivGetList").innerHTML += resultado[i] + "<br/>"; (resultado) { if(result.length!=0) { for(var i=0;i<result.length;i++) { document.getElementById("contentDivGetObjectList").innerHTML += "Nombre:" + resultado[i ].Nombre + "Edad:" + resultado[i].Edad + "<br/>" </script></head><body> <form id="form1" runat="server"> <asp:ScriptManager ID="smJs" runat="servidor" > <Servicios> <asp:ServiceReference Path="WebService/JsWebService.asmx" /> </Servicios> </asp:ScriptManager> <div> <tipo de entrada= "botón" nombre="btnJsWebService" valor="GetString" onclick="GetString()" /> <tipo de entrada="botón" nombre="butJsWebService" valor="GetList" onclick="GetList()" /> <entrada tipo="botón" nombre="butJsWebService" valor="GetObjectList" onclick="GetObjectList()" /> <entrada tipo="botón" nombre="butJsWebService" valor="GetStringParam" onclick="GetStringParam('js llama a WebService ')" /> <div id="contentDivGetList"></div> <div id="contentDivGetObjectList"></div> </div> </form></body></html