في ASP.NET 2.0 AJAX، يمكن استدعاء خدمة ويب الخادم بسهولة في Client 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] لكتابة الإعلان الثاني
3 في Asp.net 2.0، يمكنك استخدام DataTable مباشرةً كنوع الإرجاع، لكنك تحتاج إلى إضافة سمة محول التسلسل إلى ملف Web.config. تحتوي كل من DataSet وDataTable وDataRow على محولات
<system.web.extensions>
<البرمجة النصية>
<خدمات الويب>
<jsonالتسلسل>
<المحولات>
<add name="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
<add name="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
<add name="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
</المحولات>
</jsonSerialization>
</ويب سيرفيسز>
</scripting>
</system.web.extensions>
خدمة الويب 1: WS1
باستخدام النظام؛
باستخدام System.Web؛
باستخدام System.Collections؛
باستخدام System.Web.Services؛
باستخدام System.Web.Services.Protocols؛
باستخدام Microsoft.Web.Script.Services؛
باستخدام System.Data؛
/**//// <الملخص>
/// وصف موجز لـ WS1
/// </الملخص>
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[خدمة سكريبت]
public class WS1 : System.Web.Services.WebService {
public WS1 () {
// في حالة استخدام مكونات مصممة، قم بإلغاء التعليق على الأسطر التالية
//InitializeComponent();
}
[طريقة ويب]
سلسلة عامة ServerTime ()
{
return String.Format("now: {0}"، DateTime.Now);
}
[طريقة ويب]
DataTable العامة GetDataTable()
{
DataTable dt = new DataTable("Person");
dt.Columns.Add(new DataColumn("Name", typeof(string)));
dt.Columns.Add(new DataColumn("LastName", typeof(string)));
dt.Columns.Add(new DataColumn("Email", typeof(string)));
dt.Rows.Add("kui", "he", " [email protected] ");
dt.Rows.Add("ren", "chao", " [email protected] ");
return dt;
}
}
خدمة الويب 2: WS
باستخدام النظام؛
باستخدام System.Web؛
باستخدام System.Collections؛
باستخدام System.Web.Services؛
باستخدام System.Web.Services.Protocols؛
باستخدام Microsoft.Web.Script.Services
/**//// <summary>
/// وصف موجز لـ WS
/// </الملخص>
[WebService(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[خدمة سكريبت]
public class WS : System.Web.Services.WebService {
public WS () {
// في حالة استخدام مكونات مصممة، قم بإلغاء التعليق على الأسطر التالية
//InitializeComponent();
}
[طريقة ويب]
[ScriptMethod(UseHttpGet = صحيح)]
سلسلة HelloWorld العامة (استعلام سلسلة)
{
string inputString = Server.HtmlEncode(query);
إذا (!String.IsNullOrEmpty(inputString))
{
return String.Format("hello, {0}. ", inputString);
}
آخر
{
إرجاع "سلسلة الاستعلام فارغة أو فارغة"؛
}
}
}
2. الصفحة الأولى:
النقاط الرئيسية التي يجب ملاحظتها:
يتم تعيين أساليب WebService الخلفية التي يجب استخدامها في المواقع التالية
<asp:ScriptManager ID="ScriptManager1" runat="server">
<الخدمات>
<asp:ServiceReference Path="~/WS.asmx" />
<asp:ServiceReference Path="~/WS1.asmx" />
</الخدمات>
</asp:ScriptManager>
الصفحة الافتراضية:
<%@ لغة الصفحة = "C#" AutoEventWireup = "true" CodeFile = "Default.aspx.cs" Inherits = "_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1// AR" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<رئيس التشغيل = "الخادم">
<title>صفحة بلا عنوان</title>
<script language="javascript" type="text/javascript" src="js.js">
</script>
</head>
<الجسم>
<معرف النموذج = "form1" runat = "الخادم">
<asp:ScriptManager ID = "ScriptManager1" runat = "الخادم">
<الخدمات>
<asp:ServiceReference Path="~/WS.asmx" />
<asp:ServiceReference Path="~/WS1.asmx" />
</الخدمات>
</asp:ScriptManager>
<ديف>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="dd();return false;" />
<div معرف = "الوقت">
</div>
<div معرف = "القائمة 1">
<asp:DropDownList ID = "ddl1" runat = "الخادم" العرض = "187px">
</asp:DropDownList>
</div>
</div>
</النموذج>
</الجسم>
</html>
3. برنامج جافا سكريبت:
النقاط الرئيسية التي يجب ملاحظتها:
يحتاج AJAX نوفمبر CTP إلى استخدام طريقة eval () لتحويله إلى كائن DataTable (وقطع الواجهة الأمامية "(")، بينما يدعم AJAX ديسمبر CTP الطريقة التالية لتحويل "Sys.Preview.Data.DataTable.parseFromJson( النتيجة) "
وظيفة dd ()
{
WS.HelloWorld(
"هيكوي"،
وظيفة (نتيجة)
{
تنبيه (نتيجة)؛
}
);
WS1.ServerTime(
وظيفة (نتيجة)
{
تنبيه (نتيجة)؛
var divTime = document.getElementById("time");
divTime.innerHTML = result;
}
);
WS1.GetDataTable(
وظيفة (نتيجة)
{
// احصل على عنصر التحكم في المربع المنسدل
var List = document.getElementById("ddl1");
// يحتاج AJAX نوفمبر CTP إلى استخدام طريقة eval () لتحويله إلى كائن DataTable (وقطع البادئة "(")
var Text= result.dataArray.substring(0,result.dataArray.length -1);
var Table = eval(Text);
// يدعم AJAX ديسمبر CTP طرق التحويل التالية
// var Table = Sys.Preview.Data.DataTable.parseFromJson(result);
// امسح عناصر القائمة الأصلية للمربع المنسدل
لـ (x=List.options.length-1; x > -1; x--)
{
List.remove(0);
}
// أضف البيانات من DataTable الذي تم الحصول عليه إلى عنصر قائمة المربع المنسدل
لـ (x=0; x < Table.length; x++ )
{
// احصل على كل صف
var Row = Table[x];
// أنشئ عنصر قائمة
خيار فار = document.createElement("option");
// يعرض عنصر القائمة مهمة نصية
option.text = Row.Name + " " + Row.LastName؛
// تعيين قيم خيار عنصر القائمة
option.value = Row.Email;
// تحديد نوع المتصفح وإضافة العناصر
إذا ( window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
List.add(option);
آخر
List.add(option, null);
}
}
);
}
نموذج التعليمات البرمجية: http://www.cnblogs.com/heekui/archive/2007/01/10/616332.html