السلام عليكم .
ساتحدث في هذا الموضوع عن إستخدام Web Services +Client Script لASP.NET AJAX.
أي كيف يمكننا من خلالASP.NET AJAX أن نستخدم Methods موجوده في ملف Web Service- asmx عن طريق جافاسكربت و بدون Post Back:
1- فتح مشروع جديد أو ASP.NET Ajax Enabled Web site لمستخدمي asp.net 2005.
2-Now Add New Item إختار Web Service.

3-حتى نستطيع إستخدام script بإستخدام ASP.NET AJAX يجب إضافة ScriptServiceAttribute attribute
بحيث نضعه قبل تعريف الكلاس
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
.
.
.
}
أما الشرط الثاني يكون موجود تلقائيا في ملف ال Web.config لإعدادات إستخدام ASP.NET AJAX و هو registerint the ScriptHandlerFactory
HTTP handler
كود
<system.web>
<httpHandlers>
<remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx"
type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/>
</httpHandlers>
<system.web>
إذا لا حاجة لإضافته لأننا نستخدم ASP.NET Ajax Enabled Web site
4-نضيف ميثود لإرجاع وقت السيرفر و يصبح ملف ال WebService كالتالي :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
[WebService(Namespace = http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService {
[WebMethod]
public string OurServerOutput() {
return "The Server Date and Time is : " + DateTime.Now.ToString();
}
}
5-الان في صفحة الaspx نضيف ScriptManager و نعرف بداخله ServiceReference child element و نحدد فيه اسم ملف الasmx.
<asp:ScriptManager runat="server" ID="scriptManager">
<Services>
<asp:ServiceReference Path="WebService.asmx" />
</Services>
</asp:ScriptManager>بالنسبة لل Web service path يمكن أن يكون أيضا application relative أو domain relative
6-نضيف كود الجافاسكربت الذي ينادي الويب سيرفيس :
<script language="javascript" type="text/javascript">
function CallDateTime() {
WebService.OurServerOutput(OnSucceeded);
}
function OnSucceeded(result)
{
var lblOutput = document.getElementById("lblOutupt");
lblOutput.innerHTML = result;
}
</script>بحيث نناديه عن طريق إسم الكلاس و الميثود معا .
7-إضافة Button و lable
<input id="btnCallDateTime" type="button" value="Call Web Service" onclick="CallDateTime()"/>
<asp:Label ID="lblOutupt" runat="server" Text="Label"></asp:Label>
و هذه أخر خطوه , بعدها عند الضغط على btnCallDateTime يرجع لنا وقت السيرفر بدون رفرش ......
أيضا يمكننا إرسال باراميتر من الجافاسكربت الى WebService.
أرجو أن تكون هذه الخطوات واضحه و أي إستفسار عن هذه الطريقة أو كيف هنا الجافاسكربت تخاطب Web Method او أي تعقيب تفيدونا فيه فيمكنكم وضعها هنا.
مع التحية.