ใน ASP.NET 2.0 AJAX เซิร์ฟเวอร์ Webservice สามารถเรียกได้อย่างง่ายดายในไคลเอนต์ js ต่อไปนี้คือตัวอย่างบางส่วนของการโทร เวอร์ชัน ASP.NET 2.0 AJAX ที่ติดตั้งโดยผู้เขียน
คือ AJAX พฤศจิกายน CTP
สามตัวอย่างคือ:
1 วิธี WS พร้อมพารามิเตอร์
2 วิธี WS โดยไม่มีพารามิเตอร์
3 วิธี WS พร้อมประเภทพารามิเตอร์ DataTable
1 WebMethod
ประเด็นสำคัญที่ควรทราบ:
1 คลาส WebMethod จำเป็นต้องเพิ่มเนมสเปซ Microsoft.Web.Script.Services และพื้นที่นี้จำเป็นต้องอ้างอิงถึง Microsoft.Web.Preview.dll
เพิ่มแท็ก [ScriptService] เพื่อพิมพ์การประกาศ 2
3 ใน Asp.net 2.0 คุณสามารถใช้ DataTable เป็นประเภทส่งคืนได้โดยตรง แต่คุณต้องเพิ่มแอตทริบิวต์ตัวแปลงอนุกรมลงในไฟล์ Web.config ชุดข้อมูล, DataTable และ DataRow ทั้งหมดมีตัวแปลง
<system.web.extensions>
<การเขียนสคริปต์>
<บริการเว็บ>
<jsonการทำให้เป็นอนุกรม>
<ตัวแปลง>
<เพิ่มชื่อ = "DataSetConverter" type = "Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
<เพิ่มชื่อ = "DataRowConverter" type = "Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
<เพิ่มชื่อ = "DataTableConverter" type = "Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
</ตัวแปลง>
</jsonการทำให้เป็นอนุกรม>
</บริการเว็บ>
</สคริปต์>
</system.web.extensions>
บริการเว็บ 1: WS1
โดยใช้ระบบ;
ใช้ System.Web;
ใช้ System.Collections;
ใช้ System.Web.Services;
โดยใช้ System.Web.Services.Protocols;
ใช้ Microsoft.Web.Script.Services;
ใช้ System.Data;
/***////// <สรุป>
/// คำอธิบายโดยย่อของ WS1
/// </สรุป>
[บริการเว็บ (เนมสเปซ = " http://tempuri.org/ ")]
[WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)]
[บริการสคริปต์]
คลาสสาธารณะ WS1 : System.Web.Services.WebService {
WS1 สาธารณะ () {
//หากใช้ส่วนประกอบที่ออกแบบ ให้ยกเลิกการใส่เครื่องหมายข้อคิดเห็นในบรรทัดต่อไปนี้
//เตรียมใช้งานส่วนประกอบ();
}
[วิธีเว็บ]
สตริงสาธารณะ ServerTime()
-
return String.Format("now: {0}", DateTime.Now);
}
[วิธีเว็บ]
DataTable GetDataTable สาธารณะ ()
-
DataTable dt = new DataTable("บุคคล");
dt.Columns.Add(new DataColumn("ชื่อ", typeof(string)));
dt.Columns.Add(new DataColumn("นามสกุล", typeof(string)));
dt.Columns.Add(new DataColumn("อีเมล", typeof(string)));
dt.Rows.Add("kui", "เขา", " [email protected] ");
dt.Rows.Add("ren", "chao", " [email protected] ");
กลับ dt;
-
-
บริการเว็บ 2: WS
ใช้ระบบ;
ใช้ System.Web;
ใช้ System.Collections;
ใช้ System.Web.Services;
โดยใช้ System.Web.Services.Protocols;
ใช้ Microsoft.Web.Script.Services;
/**//// <summary>
/// คำอธิบายโดยย่อของ WS
/// </สรุป>
[บริการเว็บ (เนมสเปซ = " http://tempuri.org/ ")]
[WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)]
[บริการสคริปต์]
WS คลาสสาธารณะ : System.Web.Services.WebService {
WS สาธารณะ () {
//หากใช้ส่วนประกอบที่ออกแบบ ให้ยกเลิกการใส่เครื่องหมายข้อคิดเห็นในบรรทัดต่อไปนี้
//เตรียมใช้งานส่วนประกอบ();
}
[วิธีเว็บ]
[ScriptMethod(UseHttpGet = true)]
สตริงสาธารณะ HelloWorld (แบบสอบถามสตริง)
-
สตริง inputString = Server.HtmlEncode (แบบสอบถาม);
ถ้า (!String.IsNullOrEmpty(inputString))
-
return String.Format("hello, {0}. ", inputString);
-
อื่น
-
return "สตริงการสืบค้นเป็นโมฆะหรือว่างเปล่า";
-
}
}
2. หน้าแรก:
ประเด็นสำคัญที่ควรทราบ:
วิธีการ WebService พื้นหลังที่จำเป็นต้องใช้ได้รับการตั้งค่าในตำแหน่งต่อไปนี้
<asp:ScriptManager ID="ScriptManager1" runat="server">
<บริการ>
<asp:ServiceReference Path="~/WS.asmx" />
<asp:ServiceReference Path="~/WS1.asmx" />
</บริการ>
</asp:ScriptManager>
หน้าเริ่มต้น:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1// TH" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<หัว runat="เซิร์ฟเวอร์">
<title>หน้าที่ไม่มีชื่อ</title>
<script language="javascript" type="text/javascript" src="js.js">
</สคริปต์>
</หัว>
<ร่างกาย>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="เซิร์ฟเวอร์">
<บริการ>
<asp:ServiceReference Path="~/WS.asmx" />
<asp:ServiceReference Path="~/WS1.asmx" />
</บริการ>
</asp:ScriptManager>
<div>
<asp:Button ID = "Button1" runat = "เซิร์ฟเวอร์" Text = "ปุ่ม" OnClientClick = "dd (); ส่งกลับเท็จ" />
<div id="เวลา">
</div>
<div id="รายการ1">
<asp:DropDownList ID = "ddl1" runat = "เซิร์ฟเวอร์" ความกว้าง = "187px">
</asp:DropDownList>
</div>
</div>
</แบบฟอร์ม>
</ร่างกาย>
</html>
3. โปรแกรมจาวาสคริปต์:
ประเด็นสำคัญที่ควรทราบ:
AJAX พฤศจิกายน CTP จำเป็นต้องใช้เมธอด eval() เพื่อแปลงเป็นวัตถุ DataTable (และตัดส่วนหน้า "(") ออก ในขณะที่ AJAX December CTP รองรับวิธีการต่อไปนี้ในการแปลง "Sys.Preview.Data.DataTable.parseFromJson( ผลลัพธ์) ”
ฟังก์ชั่น dd()
-
WS.HelloWorld(
'เฮกุย',
ฟังก์ชั่น (ผลลัพธ์)
-
การแจ้งเตือน (ผลลัพธ์);
-
-
WS1.ServerTime(
ฟังก์ชั่น (ผลลัพธ์)
-
การแจ้งเตือน (ผลลัพธ์);
var divTime = document.getElementById("เวลา");
divTime.innerHTML = ผลลัพธ์;
-
-
WS1.GetDataTable(
ฟังก์ชั่น (ผลลัพธ์)
-
//รับการควบคุมกล่องแบบหล่นลง
รายการ var = document.getElementById("ddl1");
//AJAX พฤศจิกายน CTP จำเป็นต้องใช้เมธอด eval() เพื่อแปลงเป็นวัตถุ DataTable (และตัดส่วนนำหน้า "(") ออก
var Text= result.dataArray.substring(0,result.dataArray.length -1);
var Table = eval (ข้อความ);
//AJAX ธันวาคม CTP รองรับวิธีการแปลงต่อไปนี้
// var Table = Sys.Preview.Data.DataTable.parseFromJson(ผลลัพธ์);
//ล้างรายการต้นฉบับของกล่องแบบเลื่อนลง
สำหรับ (x=List.options.length-1; x > -1; x--)
-
รายการลบ(0);
-
//เพิ่มข้อมูลจาก DataTable ที่ได้รับไปยังรายการแบบหล่นลงของกล่อง
สำหรับ (x=0; x < Table.length; x++ )
-
//รับแต่ละแถว
var แถว = ตาราง[x];
//สร้างรายการ
ตัวเลือก var = document.createElement("ตัวเลือก");
//รายการแสดงการกำหนดข้อความ
option.text = Row.Name + " " + Row.LastName;
//การกำหนดค่าตัวเลือกรายการ
option.value = Row.Email;
//กำหนดประเภทเบราว์เซอร์และเพิ่มรายการ
ถ้า ( window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
List.add(ตัวเลือก);
อื่น
List.add(ตัวเลือก, null);
-
-
-
-
โค้ดตัวอย่าง: http://www.cnblogs.com/heekui/archive/2007/01/10/616332.html