Jika Anda menggunakan javascript untuk memanggil layanan web di bawah .net, Anda perlu menggunakan perilaku layanan web. Berikut contoh penjelasannya, relatif sederhana
1. Pertama, buat layanan web, seperti
<%@ WebService Language="C#" class=MyMath %>
menggunakan Sistem;
menggunakan System.Web.Layanan;
kelas publik MyMath {
[Metode Web]
publik int tambahkan(int a, int b)
{
kembalikan a+b;
}
[Metode Web]
publik int kurangi(int a, int b)
{
kembalikan a - b;
}
}
Kemudian publikasikan dan dapatkan wsdl-nya terlebih dahulu.
2. Pertama, kita perlu mendownload file webbehavior.htc (Anda dapat mengunjungi http://msdn.microsoft.com/downloads/samples/internet/behaviors/library/webservice/default.asp .)
Unduh dan letakkan di direktori web Anda saat ini. Kemudian di halaman tempat Anda ingin memanggil webserice, modifikasi sebagai berikut
<tubuh>
<div id="addservice" style="behavior:url(webservice.htc)"></div>
</tubuh>
Di sini kita memberi nama div id sesuatu yang bermakna dan menentukan gaya sebagai perilaku layanan web. Selanjutnya, kita perlu menulis javascript untuk memanggil webserice:
Pertama, kita menyebutnya wsdladdservice.useService(" http://localhost/services/math.asmx?WSDL", "MyMath ");
Gunakan id.useService(jalur WSDLL, metode penamaan sederhana);
Id yang kami atur sebelumnya adalah addservice, dan untuk memudahkan klien memanggilnya, kami menamakannya MyMath. Untuk memastikan webserice dapat dipanggil dengan benar, javascript yang menangani panggilan webservice harus segera dimuat pada event onload di body, sebagai berikut
<bahasa skrip="JavaScript">
fungsi init()
{
addservice.useService(" http://localhost/services/math.asmx?WSDL","MathSaya " }
</skrip>
<tubuh onload="init()">
<div id="layanan" style="perilaku:url(webservice.htc)">
</div>
</tubuh>
Di atas, melalui perilaku layanan web, pertama-tama kita mendapatkan wsdl yang mengembalikan layanan web. Selanjutnya, kita harus melakukan panggilan. Format panggilannya adalah sebagai berikut: iCallID = id.FriendlyName.callService([CallbackHandler,] "MethodName" , Param1, Param2, ..);
Di sini id adalah id yang kita atur di div, dan FridndbyName adalah nama yang baru saja kita beri nama untuk aspek tersebut, ini MyMath, dan CallbackHandler adalah nama proses dari fungsi panggilan balik. Jika tidak ada pengaturan, defaultnya adalah menggunakan onresult untuk memanggilnya. Metode ini digunakan untuk pemrosesan, yang akan dibahas di bawah, dan param1, param2, dll. mengacu pada parameter yang masuk, seperti:
<SCRIPT bahasa="JavaScript">
// Semua variabel ini harus bersifat global,
// karena keduanya digunakan pada init() dan onresult().
var iCallID = 0;
variantA = 5;
var intB = 6;
fungsi init()
{
// Tetapkan nama ramah "MyMath" untuk WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// Metode berikut tidak menentukan pengendali panggilan balik, jadi onWSresult() digunakan
iCallID = service.MyMath.callService("tambah", intA, intB);
}
fungsi padaWSresult()
{
// jika ada kesalahan, dan panggilan tersebut berasal dari call() di init()
if((event.result.error)&&(iCallID==event.result.id))
{
// Tarik informasi kesalahan dari properti event.result.errorDetail
var xfaultcode = event.result.errorDetail.code;
var xfaultstring = acara.hasil.errorDetail.string;
var xfaultsoap = event.result.errorDetail.raw;
// Tambahkan kode untuk menangani kode kesalahan tertentu di sini
}
// jika tidak ada error, dan panggilan datang dari call() di init()
else if((!event.result.error) && (iCallID == event.result.id))
{
// Tunjukkan aritmatikanya!
alert(intA + ' + ' + intB + ' = ' + event.hasil.nilai);
}
kalau tidak
{
alert("Ada hal lain yang memicu acara ini!");
}
}
</SKRIP>
<tubuh onload="init()">
<div id="service" style="behavior:url(webservice.htc)" onresult="onWSresult()">
</div>
</tubuh>
Perhatikan bahwa jika Anda menggunakan metode onresult untuk mengembalikan, Anda harus menentukan metode pemrosesan di bagian div onresult. Di sini, metode onWsresult() digunakan, di mana informasi yang dikembalikan digunakan untuk menentukan apakah ada kesalahan. Jika terjadi kesalahan, itu akan ditampilkan.
Jika panggilan balik digunakan, lakukan sebagai berikut
<SCRIPT bahasa="JavaScript">
// Semua variabel ini harus bersifat global,
// karena keduanya digunakan pada init() dan onResult().
var iCallID = 0;
variantA = 5;
var intB = 6;
fungsi init()
{
// Tetapkan nama ramah "MyMath" untuk WebServiceURL
service.useService("/services/math.asmx?WSDL","MyMath");
// Yang berikut ini menggunakan pengendali panggilan balik bernama "mathResults"
iCallID = service.MyMath.callService(mathResults, "tambah", intA, intB);
}
fungsi matematikaHasil(hasil)
{
// jika ada kesalahan, dan panggilan tersebut berasal dari call() di init()
jika(hasil.kesalahan)
{
// Tarik informasi kesalahan dari properti event.result.errorDetail
var xfaultcode = hasil.errorDetail.code;
var xfaultstring = hasil.errorDetail.string;
var xfaultsoap = hasil.errorDetail.raw;
// Tambahkan kode untuk menangani kode kesalahan tertentu di sini
}
// jika tidak ada kesalahan
kalau tidak
{
// Tampilkan aritmatika
alert(intA + ' + ' + intB + " = " + hasil.nilai);
}
}
</SKRIP>
<tubuh onload="init()">
<div id="layanan" style="perilaku:url(webservice.htc)">
</div>
</tubuh>