Récemment, un ami autour de moi travaillait sur un projet et l'une des exigences du module nécessitait l'utilisation de js pour appeler webService. Il m'a demandé de l'aider à réfléchir à une solution, car je n'avais jamais fait cela auparavant. Après environ une heure de test, cela a fonctionné. J’ai trouvé ce truc si simple après l’avoir écrit. Au début, je pensais que c'était compliqué. Partagez le code écrit lors des tests, j'espère qu'il sera utile à tout le monde.
Contenu du fichier WebService
code
utilisation de System;utilisation de System.Web;utilisation de System.Collections;utilisation de System.Collections.Generic;utilisation de System.Web.Services;utilisation de System.Web.Services.Protocols;utilisation de System.Web.UI.MobileControls;/// <résumé >/// Description récapitulative 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 vous utilisez des composants conçus, veuillez décommenter la ligne suivante //InitializeComponent( } [WebMethod] public string GetString() { return " GetString"; } [WebMethod] public string GetString(nom de la chaîne) { return string.Format("{0}Bienvenue!", nom); } [WebMethod] public List<string> GetList() { List< string> listStr = new List<string>(); for (int i = 0; i < 10; i++) { listStr.Add("test" + 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("nom" + i, i + 20); ); } renvoie les objets ; }}
Le code de la page aspx qui appelle WebService
code
<%@ 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 appelle WebService</title> <script type="text/javascript"> function GetString() { JsWebService.GetString(GetStringCallBack); //Appelle la méthode dans WebService et définit la fonction de rappel} function GetStringCallBack(result) { alert(result); } function GetStringParam(name) { JsWebService.GetString(name,GetStringParamCallBack); //Appelle la méthode dans WebService et définit la fonction de rappel S'il y a des paramètres dans cette méthode, ajoutez ce paramètre avant la fonction de rappel. } function GetStringParamCallBack(result) { alert(result); } function GetList() { JsWebService.GetList(GetListCallBack); } function GetListCallBack(result) { if(result.length!=0) { for(var i=0;i <result.length;i++) { document.getElementById("contentDivGetList").innerHTML += result[i] + "<br/>"; } } } function GetObjectList() { JsWebService.GetObjectList(GetObjectListCallBack); (result) { if(result.length!=0) { for(var i=0;i<result.length;i++) { document.getElementById("contentDivGetObjectList").innerHTML += "Name:" + result[i ].Nom + "Âge :" + résultat[i].Âge + "<br/>"; } } } </script></head><body> <form id="form1" runat="server"> <asp:ScriptManager ID="smJs" runat="server" > <Services> <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 appelle WebService ')" /> <div id="contentDivGetList"></div> <div id="contentDivGetObjectList"></div> </div> </form></body></html