إذا كنت تستخدم جافا سكريبت للاتصال بخدمة الويب ضمن .net، فستحتاج إلى استخدام سلوك خدمة الويب. فيما يلي مثال للتوضيح، وهو بسيط نسبيًا
1. أولاً، قم بإنشاء خدمة ويب، مثل
<%@ WebService Language="C#" class=MyMath %>
باستخدام النظام؛
باستخدام System.Web.Services؛
الطبقة العامة MyMath {
[طريقة ويب]
إضافة int العامة (int a، int b)
{
العودة أ + ب؛
}
[طريقة ويب]
طرح int العام (int a، int b)
{
العودة أ - ب؛
}
}
ثم قم بنشره واحصل على wsdl الخاص به أولاً.
2. أولاً، نحتاج إلى تنزيل الملف webbehavior.htc (يمكنك الانتقال إلى http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp .)
قم بتنزيله ووضعه في الدليل الحالي لموقع الويب الخاص بك، ثم في الصفحة التي تريد الاتصال بـ webserice فيها، قم بتعديله على النحو التالي
<الجسم>
الجسم>
هنا نقوم بتسمية معرف div بشيء ذي معنى ونحدد النمط كسلوك خدمة ويب. بعد ذلك، نحتاج إلى كتابة جافا سكريبت للاتصال بـ webserice:
أولاً، نسميها wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath "); في جافا سكريبت.
استخدم id.useService(مسار WSDLL، طريقة تسمية بسيطة)؛
المعرف الذي قمنا بتعيينه من قبل كان addservice، ولتسهيل على العميل الاتصال به، أطلقنا عليه اسم MyMath. من أجل ضمان إمكانية استدعاء webserice بشكل صحيح، يجب تحميل جافا سكريبت الذي يتعامل مع استدعاءات خدمة الويب على الفور في حدث onload في النص، كما يلي
<لغة البرمجة = "جافا سكريبت">
وظيفة الحرف الأول ()
{
addservice.useService(" http://localhost/services/math.asmx?WSDL"، "MyMath ") }
الجسم>
في ما سبق، من خلال سلوك خدمة الويب، نحصل أولاً على wsdl الذي يُرجع خدمة الويب. بعد ذلك، يتعين علينا إجراء مكالمة. تنسيق المكالمة هو كما يلي: iCallID = id.FriendlyName.callService([CallbackHandler,] "MethodName" ، بارام1، بارام2، ..) ؛
المعرف هنا هو المعرف الذي قمنا بتعيينه في div، وFridndbyName هو الاسم الذي قمنا بتسميته للتو للجانب، وهنا MyMath، وCallbackHandler هو اسم العملية لوظيفة رد الاتصال. إذا لم يكن هناك إعداد، فإن الإعداد الافتراضي هو استخدام onresult لاستدعائها، يتم استخدام الطريقة للمعالجة، والتي سيتم مناقشتها أدناه، وتشير المعلمات 1 وparam2 وما إلى ذلك إلى المعلمات الواردة، مثل:
<لغة البرنامج النصي = "جافا سكريبت">
// كل هذه المتغيرات يجب أن تكون عالمية،
// لأنها تُستخدم في كلٍ من init() وonresult().
فار iCallID = 0;
فارينتا = 5؛
فار intB = 6;
وظيفة الحرف الأول ()
{
// أنشئ الاسم المألوف "MyMath" لـ WebServiceURL
Service.useService("/services/math.asmx?WSDL"،"MyMath")؛
// لا تحدد الطريقة التالية معالج رد الاتصال، لذلك يتم استخدام onWSresult()
iCallID =service.MyMath.callService("add", intA, intB);
}
الدالة onWSresult()
{
// إذا كان هناك خطأ، وجاء الاتصال من المكالمة () في init ()
إذا ((event.result.error)&&(iCallID==event.result.id))
{
// اسحب معلومات الخطأ من خصائص events.result.errorDetail
var xfaultcode = events.result.errorDetail.code;
var xfaultstring = events.result.errorDetail.string;
var xfaultsoap = events.result.errorDetail.raw;
// أضف رمزًا للتعامل مع رموز خطأ محددة هنا
}
// إذا لم يكن هناك خطأ، وجاءت المكالمة من المكالمة () في init ()
وإلا إذا ((!event.result.error) && (iCallID == events.result.id))
{
// اعرض العملية الحسابية!
تنبيه (intA + ' + ' + intB + ' = ' + events.result.value);
}
آخر
{
تنبيه("هناك شيء آخر أطلق الحدث!");
}
}
النص>
الجسم>
لاحظ أنه إذا كنت تستخدم طريقة onresult للعودة، فيجب عليك تحديد طريقة المعالجة في نتيجة جزء div هنا، يتم استخدام طريقة onWsresult()، حيث يتم استخدام المعلومات التي تم إرجاعها لتحديد ما إذا كان هناك خطأ. في حالة حدوث خطأ، يتم عرضه.
إذا تم استخدام عمليات الاسترجاعات، تابع على النحو التالي
<لغة البرنامج النصي = "جافا سكريبت">
// كل هذه المتغيرات يجب أن تكون عالمية،
// لأنها تُستخدم في كلٍ من init() وonResult().
فار iCallID = 0;
فارينتا = 5؛
فار intB = 6;
وظيفة الحرف الأول ()
{
// أنشئ الاسم المألوف "MyMath" لـ WebServiceURL
Service.useService("/services/math.asmx?WSDL"،"MyMath")؛
// يستخدم ما يلي معالج رد الاتصال المسمى "mathResults"
iCallID =service.MyMath.callService(mathResults, "add", intA, intB);
}
دالة الرياضيات النتائج (النتيجة)
{
// إذا كان هناك خطأ، وجاء الاتصال من المكالمة () في init ()
إذا (نتيجة.خطأ)
{
// اسحب معلومات الخطأ من خصائص events.result.errorDetail
var xfaultcode = result.errorDetail.code;
var xfaultstring = result.errorDetail.string;
var xfaultsoap = result.errorDetail.raw;
// أضف رمزًا للتعامل مع رموز خطأ محددة هنا
}
// إذا لم يكن هناك خطأ
آخر
{
// أظهر العملية الحسابية
تنبيه (intA + ' + ' + intB + " = " + result.value)؛
}
}
النص>
الجسم>