Di ASP.NET 2.0 AJAX, layanan Web server dapat dengan mudah dipanggil di klien js. Berikut adalah beberapa contoh panggilan. Versi ASP.NET 2.0 AJAX yang diinstal oleh penulis
adalah AJAX November CTP.
Tiga contohnya adalah:
1 metode WS dengan parameter
2 Metode WS tanpa parameter
3 Metode WS dengan tipe parameter DataTable
1. WebMethod
Poin-poin penting yang perlu diperhatikan:
1 Kelas WebMethod perlu menambahkan namespace Microsoft.Web.Script.Services, dan ruang ini perlu merujuk ke Microsoft.Web.Preview.dll
Tambahkan tag [ScriptService] untuk deklarasi tipe 2
3 Di Asp.net 2.0, Anda bisa langsung menggunakan DataTable sebagai tipe pengembalian, tetapi Anda perlu menambahkan atribut konverter serialisasi ke file Web.config. DataSet, DataTable, dan DataRow semuanya memiliki konverter
<system.web.extensions>
<skrip>
<Layanan web>
<jsonSerialisasi>
<konverter>
<tambahkan nama="DataSetConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
<tambahkan nama="DataRowConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
<tambahkan nama="DataTableConverter" type="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
</konverter>
</jsonSerialisasi>
</Layanan Web>
</skrip>
</sistem.web.ekstensi>
Layanan WEB 1: WS1
menggunakan Sistem;
menggunakan Sistem.Web;
menggunakan Sistem.Koleksi;
menggunakan System.Web.Layanan;
menggunakan System.Web.Services.Protocols;
menggunakan Microsoft.Web.Script.Layanan;
menggunakan Sistem.Data;
/**//// <ringkasan>
/// Ringkasan deskripsi WS1
/// </ringkasan>
[Layanan Web(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[Layanan Skrip]
public class WS1 : System.Web.Services.WebService {
public WS1 () {
//Jika menggunakan komponen yang dirancang, batalkan komentar pada baris berikut
//InisialisasiKomponen();
}
[Metode Web]
string publik Waktu Server()
{
return String.Format("sekarang: {0}", DateTime.Sekarang);
}
[Metode Web]
Tabel Data publik GetDataTable()
{
DataTable dt = new DataTable("Orang");
dt.Columns.Add(new DataColumn("Nama", typeof(string)));
dt.Columns.Add(new DataColumn("Nama Belakang", typeof(string)));
dt.Columns.Add(new DataColumn("Email", typeof(string)));
dt.Rows.Add("kui", "he", " [email protected] ");
dt.Rows.Add("ren", "chao", " [email protected] ")
;
}
}
Layanan WEB 2: WS
menggunakan Sistem;
menggunakan Sistem.Web;
menggunakan Sistem.Koleksi;
menggunakan System.Web.Layanan;
menggunakan System.Web.Services.Protocols;
menggunakan Microsoft.Web.Script.Layanan;
/**//// <ringkasan>
/// Ringkasan deskripsi WS
/// </ringkasan>
[Layanan Web(Namespace = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[Layanan Skrip]
public class WS : System.Web.Services.WebService {
public WS () {
//Jika menggunakan komponen yang dirancang, batalkan komentar pada baris berikut
//InisialisasiKomponen();
}
[Metode Web]
[Metode Skrip(UseHttpGet = benar)]
string publik HelloWorld(String kueri)
{
string inputString = Server.HtmlEncode(kueri);
if (!String.IsNullOrEmpty(inputString))
{
return String.Format("halo, {0}. ", inputString);
}
kalau tidak
{
return "string kueri nol atau kosong";
}
}
}
2. Halaman depan:
Poin-poin penting yang perlu diperhatikan:
Metode WebService latar belakang yang perlu digunakan diatur di lokasi berikut
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Layanan>
<asp:Jalur ReferensiLayanan="~/WS.asmx" />
<asp:Jalur ReferensiLayanan="~/WS1.asmx" />
</Layanan>
</asp:Manajer Skrip>
Laman default:
<%@ Halaman Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1// ID" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<head runat="server">
<title>Halaman Tanpa Judul</title>
<script Language="javascript" type="text/javascript" src="js.js">
</skrip>
</kepala>
<tubuh>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Layanan>
<asp:Jalur ReferensiLayanan="~/WS.asmx" />
<asp:Jalur ReferensiLayanan="~/WS1.asmx" />
</Layanan>
</asp:Manajer Skrip>
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="dd();kembali salah;"
<div id="waktu">
</div>
<div id="Daftar1">
<asp:DropDownList ID="ddl1" runat="server" Lebar="187px">
</asp:Daftar DropDown>
</div>
</div>
</bentuk>
</tubuh>
</html>
3. Program JavaScript:
Poin-poin penting yang perlu diperhatikan:
AJAX November CTP perlu menggunakan metode eval() untuk mengubahnya menjadi objek DataTable (dan memotong bagian depan "("), sedangkan AJAX Desember CTP mendukung metode berikut untuk mengonversi "Sys.Preview.Data.DataTable.parseFromJson( hasil) ”
fungsi dd()
{
WS.HaloDunia(
'hekui',
fungsi (hasil)
{
peringatan(hasil);
}
);
WS1.Waktu Server(
fungsi (hasil)
{
peringatan(hasil);
var divTime = document.getElementById("waktu");
divTime.innerHTML = hasil;
}
);
WS1.DapatkanDataTable(
fungsi (hasil)
{
//Dapatkan kontrol kotak drop-down
var Daftar = document.getElementById("ddl1");
//AJAX November CTP perlu menggunakan metode eval() untuk mengubahnya menjadi objek DataTable (dan memotong awalan "(")
var Teks= hasil.dataArray.substring(0,hasil.dataArray.panjang -1);
var Tabel = eval(Teks);
//AJAX Desember CTP mendukung metode konversi berikut
// var Tabel = Sys.Preview.Data.DataTable.parseFromJson(hasil);
//Hapus item daftar asli dari kotak drop-down
untuk (x=Daftar.pilihan.panjang-1; x > -1; x--)
{
Daftar.hapus(0);
}
//Tambahkan data dari DataTable yang diperoleh ke item daftar kotak drop-down
untuk (x=0; x < Tabel.panjang; x++ )
{
//Dapatkan setiap baris
var Baris = Tabel[x];
//Buat item daftar
var pilihan = dokumen.createElement("pilihan");
//Item daftar menampilkan tugas teks
option.text = Baris.Nama + " " + Baris.Nama Belakang;
//Penugasan nilai opsi item daftar
option.value = Row.Email;
//Tentukan jenis browser dan tambahkan item
jika ( window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
Daftar.tambahkan(opsi);
kalau tidak
Daftar.tambahkan(opsi, null);
}
}
);
}
Contoh kode: http://www.cnblogs.com/heekui/archive/2007/01/10/616332.html