เมื่อเร็วๆ นี้ เพื่อนที่อยู่รอบตัวฉันกำลังทำโปรเจ็กต์อยู่ และหนึ่งในข้อกำหนดของโมดูลที่จำเป็นต้องใช้ js เพื่อโทรหา webService เขาขอให้ฉันช่วยคิดวิธีแก้ปัญหา เพราะฉันไม่เคยทำสิ่งนี้มาก่อน หลังจากการทดสอบประมาณหนึ่งชั่วโมงก็ใช้งานได้ ฉันพบว่าสิ่งนี้ง่ายมากหลังจากที่ฉันเขียนมันลงไป ตอนแรกฉันคิดว่ามันซับซ้อน แบ่งปันโค้ดที่เขียนระหว่างการทดสอบ ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน
เนื้อหาไฟล์บริการเว็บ
รหัส
การใช้ระบบ; การใช้ System.Web; การใช้ System.Collections; การใช้ System.Collections.Generic; การใช้ System.Web.Services; การใช้ System.Web.Services.Protocols; การใช้ System.Web.UI.MobileControls;/// <สรุป >/// คำอธิบายโดยสรุปของ 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() { //หากใช้ส่วนประกอบที่ออกแบบไว้ โปรดยกเลิกหมายเหตุบรรทัดต่อไปนี้ //InitializeComponent(); } [WebMethod] สตริงสาธารณะ GetString() { return " GetString"; } [WebMethod] สตริงสาธารณะ GetString(ชื่อสตริง) { return string.Format("{0}ยินดีต้อนรับ!, ชื่อ); } [WebMethod] รายการสาธารณะ<string> GetList() { รายการ< string> listStr = รายการใหม่<string>(); for (int i = 0; i < 10; i++) { listStr.Add("test" + i); } return listStr; } [WebMethod] รายการสาธารณะ<JsWebServiceObject> GetObjectList() { รายการ <JsWebServiceObject> objs = รายการใหม่ <JsWebServiceObject>(); for (int i = 0; i < 10; i++) { JsWebServiceObject obj = new JsWebServiceObject("name" + i, i + 20); ) } ส่งคืน objs;
รหัสหน้า aspx ที่เรียก WebService
รหัส
<%@ ภาษาเพจ = "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 เรียก WebService</title> <script type="text/javascript"> function GetString() { JsWebService.GetString(GetStringCallBack); //เรียกเมธอดใน WebService และตั้งค่าฟังก์ชันการเรียกกลับ} ฟังก์ชัน GetStringCallBack(result) { alert(result); } function GetStringParam(name) { JsWebService.GetString(name,GetStringParamCallBack); //เรียกเมธอดใน WebService และตั้งค่าฟังก์ชันการเรียกกลับ. } ฟังก์ชั่น GetStringParamCallBack (ผลลัพธ์) { alert (ผลลัพธ์); } ฟังก์ชั่น GetList () { JsWebService.GetList (GetListCallBack); } ฟังก์ชั่น GetListCallBack (ผลลัพธ์) { if (result.length! = 0) { สำหรับ (var i = 0; i <result.length;i++) { document.getElementById("contentDivGetList").innerHTML += result[i] + "<br/>"; } } ฟังก์ชัน GetObjectList() { JsWebService.GetObjectList(GetObjectListCallBack); } ฟังก์ชัน GetObjectListCallBack (ผลลัพธ์) { if(result.length!=0) { for(var i=0;i<result.length;i++) { document.getElementById("contentDivGetObjectList").innerHTML += "Name:" + result[i ].ชื่อ + "อายุ:" + ผลลัพธ์[i].อายุ + "<br/>"; } } } </script></head><body> <form id="form1" runat="server"> <asp:ScriptManager ID="smJs" runat="server"> <บริการ> <asp:ServiceReference Path="WebService/JsWebService.asmx" /> </บริการ> </asp:ScriptManager> <div> <ประเภทอินพุต= "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 เรียก WebService ')" /> <div id="contentDivGetList"></div> <div id="contentDivGetObjectList"></div> </div> </form></body></html