หากคุณใช้จาวาสคริปต์เพื่อเรียกบริการเว็บภายใต้ .net คุณต้องใช้ลักษณะการทำงานของบริการเว็บ ต่อไปนี้เป็นตัวอย่างเพื่ออธิบาย มันค่อนข้างง่าย
1. ขั้นแรก สร้างเว็บเซอร์วิส เช่น
<%@ WebService Language="C#" class=MyMath %>
ใช้ระบบ;
ใช้ System.Web.Services;
MyMath คลาสสาธารณะ {
[วิธีการเว็บ]
เพิ่มสาธารณะ int (int a, int b)
-
กลับ + b;
-
[วิธีการเว็บ]
ลบ int สาธารณะ (int a, int b)
-
ส่งคืน a - b;
-
-
จากนั้นเผยแพร่และรับ wsdl ก่อน
2. ก่อนอื่นเราต้องดาวน์โหลดไฟล์ webbehavior.htc (คุณสามารถไปที่ http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp )
ดาวน์โหลดและวางไว้ในไดเร็กทอรีปัจจุบันของเว็บของคุณ จากนั้นในเพจที่คุณต้องการเรียก webserice ให้แก้ไขดังนี้
<ร่างกาย>
<div id="addservice" style="behavior:url(webservice.htc)"></div>
</ร่างกาย>
ที่นี่เราตั้งชื่อ div id ว่ามีความหมายและระบุสไตล์เป็นพฤติกรรมของบริการเว็บ ต่อไปเราต้องเขียนจาวาสคริปต์เพื่อเรียก webserice:
อันดับแรก เราเรียกมันว่า wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath ");
ใช้ id.useService(เส้นทาง WSDLL วิธีการตั้งชื่อแบบง่าย);
ID ที่เราตั้งไว้ก่อนหน้านี้คือ addservice และเพื่อให้ลูกค้าเรียกมันได้ง่ายขึ้น เราจึงตั้งชื่อมันว่า MyMath เพื่อให้แน่ใจว่าสามารถเรียกใช้ webserice ได้อย่างถูกต้อง จะต้องโหลดจาวาสคริปต์ที่จัดการการเรียกบริการเว็บทันทีในเหตุการณ์ onload ในร่างกาย ดังนี้
<ภาษาสคริปต์ = "จาวาสคริปต์">
ฟังก์ชั่น init()
-
addservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath ");
</สคริปต์>
<body onload="init()">
<div id="บริการ" style="behavior:url(webservice.htc)">
</div>
</ร่างกาย>
ข้างต้น เราได้รับ wsdl ที่ส่งคืน webservice ก่อน ต่อไปเราต้องทำการโทร , พาราม1, พาราม2, ..);
โดยที่ id คือ id ที่เราตั้งไว้ใน div และ FridndbyName คือชื่อที่เราเพิ่งตั้งชื่อให้กับแง่มุม นี่คือ MyMath และ CallbackHandler คือชื่อกระบวนการของฟังก์ชันการโทรกลับ หากไม่มีการตั้งค่า ค่าเริ่มต้นคือการใช้ onresult เพื่อเรียกมัน วิธีการนี้ใช้สำหรับการประมวลผลซึ่งจะกล่าวถึงด้านล่างและ param1, param2 ฯลฯ อ้างถึงพารามิเตอร์ที่เข้ามาเช่น:
<SCRIPT language="จาวาสคริปต์">
// ตัวแปรทั้งหมดเหล่านี้ต้องเป็นโกลบอล
// เนื่องจากใช้ทั้งใน init() และ onresult()
var iCallID = 0;
ตัวแปรA = 5;
วาร์ intB = 6;
ฟังก์ชั่น init()
-
// ตั้งชื่อที่จำง่าย "MyMath" สำหรับ WebServiceURL
service.useService("/services/math.asmx?WSDL", "MyMath");
// วิธีการต่อไปนี้ไม่ได้ระบุตัวจัดการการเรียกกลับ ดังนั้นจึงใช้ onWSresult()
iCallID = service.MyMath.callService("เพิ่ม", intA, intB);
-
ฟังก์ชั่น onWSresult()
-
// หากมีข้อผิดพลาดและมีการโทรมาจาก call() ใน init()
ถ้า((event.result.error)&&(iCallID==event.result.id))
-
// ดึงข้อมูลข้อผิดพลาดจากคุณสมบัติ event.result.errorDetail
var xfaultcode = event.result.errorDetail.code;
var xfaultstring = event.result.errorDetail.string;
var xfaultsoap = event.result.errorDetail.raw;
// เพิ่มรหัสเพื่อจัดการรหัสข้อผิดพลาดเฉพาะที่นี่
-
// หากไม่มีข้อผิดพลาดและมีการโทรมาจาก call() ใน init()
อย่างอื่นถ้า((!event.result.error) && (iCallID == event.result.id))
-
// แสดงเลขคณิต!
การแจ้งเตือน (intA + ' + ' + intB + ' = ' + event.result.value);
-
อื่น
-
alert("มีสิ่งอื่นที่ทำให้เหตุการณ์เกิดขึ้น!");
-
-
</สคริปต์>
<body onload="init()">
<div id="บริการ" style="behavior:url(webservice.htc)" onresult="onWSresult()">
</div>
</ร่างกาย>
โปรดทราบว่าหากคุณใช้เมธอด onresult เพื่อส่งคืน คุณต้องระบุวิธีการประมวลผลในส่วน onresult ของส่วน div ในที่นี้ จะใช้เมธอด onWsresult() ซึ่งข้อมูลที่ส่งคืนจะถูกใช้เพื่อพิจารณาว่ามีข้อผิดพลาดหรือไม่ หากเกิดข้อผิดพลาดก็จะปรากฏขึ้น
หากมีการใช้การโทรกลับ ให้ดำเนินการดังนี้
<SCRIPT language="จาวาสคริปต์">
// ตัวแปรทั้งหมดเหล่านี้ต้องเป็นโกลบอล
// เนื่องจากใช้ทั้งใน init() และ onResult()
var iCallID = 0;
ตัวแปรA = 5;
วาร์ intB = 6;
ฟังก์ชั่น init()
-
// ตั้งชื่อที่จำง่าย "MyMath" สำหรับ WebServiceURL
service.useService("/services/math.asmx?WSDL", "MyMath");
// ต่อไปนี้ใช้ตัวจัดการการเรียกกลับชื่อ "mathResults"
iCallID = service.MyMath.callService(mathResults, "เพิ่ม", intA, intB);
-
ฟังก์ชั่น mathResults (ผลลัพธ์)
-
// หากมีข้อผิดพลาดและมีการโทรมาจาก call() ใน init()
ถ้า (ผลลัพธ์ข้อผิดพลาด)
-
// ดึงข้อมูลข้อผิดพลาดจากคุณสมบัติ event.result.errorDetail
var xfaultcode = result.errorDetail.code;
var xfaultstring = result.errorDetail.string;
var xfaultsoap = result.errorDetail.raw;
// เพิ่มรหัสเพื่อจัดการรหัสข้อผิดพลาดเฉพาะที่นี่
-
// หากไม่มีข้อผิดพลาด
อื่น
-
// แสดงเลขคณิต
การแจ้งเตือน (intA + ' + ' + intB + " = " + result.value);
-
-
</สคริปต์>
<body onload="init()">
<div id="บริการ" style="behavior:url(webservice.htc)">
</div>
</ร่างกาย>