Dans ASP.NET 2.0 AJAX, le service Web du serveur peut être facilement appelé dans le client js. Voici quelques exemples d'appels. La version ASP.NET 2.0 AJAX installée par l'auteur
est AJAX Novembre CTP.
Trois exemples sont :
1 méthode WS avec paramètres
Méthode 2 WS sans paramètres
3 Méthode WS avec type de paramètre DataTable
1. WebMethod
Points clés à noter :
1 La classe WebMethod doit ajouter l'espace de noms Microsoft.Web.Script.Services, et cet espace doit faire référence à Microsoft.Web.Preview.dll
Ajouter la balise [ScriptService] à la déclaration de type 2
3 Dans Asp.net 2.0, vous pouvez utiliser directement DataTable comme type de retour, mais vous devez ajouter l'attribut du convertisseur de sérialisation au fichier Web.config. DataSet, DataTable et DataRow ont tous des convertisseurs
<system.web.extensions>
<script>
<WebServices>
<jsonSerialisation>
<convertisseurs>
<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"/>
</convertisseurs>
</jsonSerialization>
</WebServices>
</script>
</system.web.extensions>
Service WEB 1 : WS1
utilisant Système ;
en utilisant System.Web ;
en utilisant System.Collections ;
en utilisant System.Web.Services ;
en utilisant System.Web.Services.Protocols ;
en utilisant Microsoft.Web.Script.Services ;
en utilisant System.Data ;
/**//// <résumé>
/// Description récapitulative de WS1
/// </summary>
[WebService (Espace de noms = " http://tempuri.org/ ")]
[WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WS1 : System.Web.Services.WebService {
public WS1() {
//Si vous utilisez des composants conçus, décommentez les lignes suivantes
//InitializeComponent();
}
[MéthodeWeb]
chaîne publique ServerTime()
{
return String.Format("maintenant : {0}", DateTime.Now);
}
[MéthodeWeb]
public DataTable GetDataTable()
{
DataTable dt = new DataTable("Personne");
dt.Columns.Add(new DataColumn("Nom", typeof(string)));
dt.Columns.Add(new DataColumn("LastName", typeof(string)));
dt.Columns.Add(new DataColumn("Email", typeof(string)));
dt.Rows.Add("kui", "il", " [email protected] ");
dt.Rows.Add("ren", "chao", " [email protected] ")
;
}
}
Service WEB 2 : WS
utilisant Système ;
en utilisant System.Web ;
en utilisant System.Collections ;
en utilisant System.Web.Services ;
en utilisant System.Web.Services.Protocols ;
en utilisant Microsoft.Web.Script.Services
/**//// <résumé>
/// Description récapitulative de WS
/// </summary>
[WebService (Espace de noms = " http://tempuri.org/ ")]
[WebServiceBinding (ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class WS : System.Web.Services.WebService {
public WS() {
//Si vous utilisez des composants conçus, décommentez les lignes suivantes
//InitializeComponent();
}
[MéthodeWeb]
[ScriptMethod (UseHttpGet = true)]
chaîne publique HelloWorld (requête de chaîne)
{
string inputString = Server.HtmlEncode(query);
si (!String.IsNullOrEmpty(inputString))
{
return String.Format("bonjour, {0}. ", inputString);
}
autre
{
return "la chaîne de requête est nulle ou vide" ;
}
}
}
2. Première page :
Points clés à noter :
Les méthodes WebService d’arrière-plan qui doivent être utilisées sont définies aux emplacements suivants
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Prestations>
<asp:ServiceReference Path="~/WS.asmx" />
<asp:ServiceReference Path="~/WS1.asmx" />
</Services>
</asp:ScriptManager>
Page par défaut :
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1// FR" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<head runat="serveur">
<title>Page sans titre</title>
<script language="javascript" type="text/javascript" src="js.js">
</script>
</head>
<corps>
<form id="form1" runat="serveur">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Prestations>
<asp:ServiceReference Path="~/WS.asmx" />
<asp:ServiceReference Path="~/WS1.asmx" />
</Services>
</asp:ScriptManager>
<div>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="dd();return false;" />
<div id="heure">
</div>
<div id="Liste1">
<asp:DropDownList ID="ddl1" runat="server" width="187px">
</asp:DropDownList>
</div>
</div>
</form>
</corps>
</html>
3. Programme JavaScript :
Points clés à noter :
AJAX novembre CTP doit utiliser la méthode eval() pour le convertir en un objet DataTable (et couper le devant "("), tandis qu'AJAX décembre CTP prend en charge la méthode suivante pour convertir "Sys.Preview.Data.DataTable.parseFromJson( résultat) ”
fonction dd()
{
WS.HelloWorld(
'hékui',
fonction (résultat)
{
alerte (résultat);
}
);
WS1.ServerTime(
fonction (résultat)
{
alerte (résultat);
var divTime = document.getElementById("heure");
divTime.innerHTML = résultat ;
}
);
WS1.GetDataTable(
fonction (résultat)
{
//Obtenir le contrôle de la liste déroulante
var Liste = document.getElementById("ddl1");
//AJAX novembre CTP doit utiliser la méthode eval() pour le convertir en un objet DataTable (et couper le début "(")
var Text= result.dataArray.substring(0,result.dataArray.length -1);
var Table = eval(Texte);
//AJAX décembre CTP prend en charge les méthodes de conversion suivantes
// var Table = Sys.Preview.Data.DataTable.parseFromJson(result);
//Efface les éléments de la liste d'origine de la liste déroulante
pour (x=List.options.length-1; x > -1; x--)
{
Liste.remove(0);
}
//Ajouter les données du DataTable obtenu à l'élément de liste déroulante
pour (x=0; x < Table.length; x++ )
{
//Obtenir chaque ligne
var Ligne = Tableau[x];
//Créer un élément de liste
var option = document.createElement("option");
//L'élément de liste affiche l'affectation du texte
option.text = Ligne.Nom + " " + Ligne.LastName ;
// Attribution des valeurs d'option d'élément de liste
option.value = Row.Email;
//Déterminer le type de navigateur et ajouter des éléments
si ( window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
List.add(option);
autre
List.add(option, null);
}
}
);
}
Exemple de code : http://www.cnblogs.com/heekui/archive/2007/01/10/616332.html