En ASP.NET 2.0 AJAX, el servicio web del servidor se puede llamar fácilmente en el cliente js. Los siguientes son algunos ejemplos de llamadas. La versión ASP.NET 2.0 AJAX instalada por el autor
es AJAX November CTP.
Tres ejemplos son:
1 método WS con parámetros
Método 2 WS sin parámetros
3 Método WS con tipo de parámetro DataTable
1. WebMethod
Puntos clave a tener en cuenta:
1 La clase WebMethod necesita agregar el espacio de nombres Microsoft.Web.Script.Services, y este espacio debe hacer referencia a Microsoft.Web.Preview.dll
Agregue la etiqueta [ScriptService] a la declaración de tipo 2
3 En Asp.net 2.0, puede usar DataTable directamente como tipo de retorno, pero debe agregar el atributo del convertidor de serialización al archivo Web.config. DataSet, DataTable y DataRow tienen convertidores
<system.web.extensions>
<scripting>
<servicios web>
<jsonSerialización>
<convertidores>
<añadir nombre="DataSetConverter" tipo="Microsoft.Web.Preview.Script.Serialization.Converters.DataSetConverter, Microsoft.Web.Preview"/>
<agregar nombre="DataRowConverter" tipo="Microsoft.Web.Preview.Script.Serialization.Converters.DataRowConverter, Microsoft.Web.Preview"/>
<añadir nombre="DataTableConverter" tipo="Microsoft.Web.Preview.Script.Serialization.Converters.DataTableConverter, Microsoft.Web.Preview"/>
</convertidores>
</jsonSerialización>
</serviciosweb>
</scripting>
</sistema.web.extensiones>
Servicio WEB 1: WS1
usando el Sistema;
usando System.Web;
usando System.Collections;
utilizando System.Web.Services;
utilizando System.Web.Services.Protocols;
utilizando Microsoft.Web.Script.Services;
usando System.Data;
/**//// <resumen>
/// Descripción resumida de WS1
/// </summary>
[WebService(Espacio de nombres = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[Servicio de secuencias de comandos]
public class WS1: System.Web.Services.WebService {
public WS1 () {
//Si utiliza componentes diseñados, descomente las siguientes líneas
//InicializarComponente();
}
[Método Web]
cadena pública ServerTime()
{
return String.Format("ahora: {0}", DateTime.Now);
}
[Método Web]
Tabla de datos pública GetDataTable()
{
DataTable dt = new DataTable("Persona");
dt.Columns.Add(new DataColumn("Nombre", tipo de (cadena)));
dt.Columns.Add(new DataColumn("Apellido", tipo de (cadena)));
dt.Columns.Add(new DataColumn("Correo electrónico", tipo de (cadena)));
dt.Rows.Add("kui", "él", " [email protected] ");
dt.Rows.Add("ren", "chao", " [email protected] ")
;
}
}
Servicio WEB 2: WS
usando el Sistema;
usando System.Web;
usando System.Collections;
utilizando System.Web.Services;
utilizando System.Web.Services.Protocols;
usando Microsoft.Web.Script.Services
/**//// <resumen>;
/// Descripción resumida de WS
/// </summary>
[WebService(Espacio de nombres = " http://tempuri.org/ ")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[Servicio de secuencias de comandos]
public class WS: System.Web.Services.WebService {
public WS () {
//Si utiliza componentes diseñados, descomente las siguientes líneas
//InicializarComponente();
}
[Método Web]
[ScriptMethod(UseHttpGet = verdadero)]
cadena pública HelloWorld (consulta de cadena)
{
cadena inputString = Server.HtmlEncode(consulta);
si (!String.IsNullOrEmpty(cadena de entrada))
{
return String.Format("hola, {0}. ", inputString);
}
demás
{
return "la cadena de consulta es nula o está vacía";
}
}
}
2. Portada:
Puntos clave a tener en cuenta:
Los métodos de WebService en segundo plano que deben usarse se configuran en las siguientes ubicaciones
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Servicios>
<asp:Ruta de referencia de servicio="~/WS.asmx" />
<asp:Ruta de referencia de servicio="~/WS1.asmx" />
</Servicios>
</asp:ScriptManager>
Página predeterminada:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1// ES" " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd ">
<html xmlns=" http://www.w3.org/1999/xhtml ">
<head runat="servidor">
<título>Página sin título</título>
<script language="javascript" type="text/javascript" src="js.js">
</script>
</head>
<cuerpo>
<formulario id="form1" runat="servidor">
<asp:ScriptManager ID="ScriptManager1" runat="servidor">
<Servicios>
<asp:Ruta de referencia de servicio="~/WS.asmx" />
<asp:Ruta de referencia de servicio="~/WS1.asmx" />
</Servicios>
</asp:ScriptManager>
<div>
<asp:ID de botón="Botón1" runat="servidor" Texto="Botón" OnClientClick="dd();return false;"
<div id="hora">
</div>
<div id="Lista1">
<asp:DropDownList ID="ddl1" runat="servidor" Ancho="187px">
</asp:ListaDesplegable>
</div>
</div>
</formulario>
</cuerpo>
</html>
3. Programa JavaScript:
Puntos clave a tener en cuenta:
AJAX November CTP necesita usar el método eval() para convertirlo en un objeto DataTable (y cortar el frente "()", mientras que AJAX December CTP admite el siguiente método para convertir "Sys.Preview.Data.DataTable.parseFromJson( resultado) "
función dd()
{
WS.HolaMundo(
'hekui',
función (resultado)
{
alerta(resultado);
}
);
WS1.ServerTime(
función (resultado)
{
alerta(resultado);
var divTime = document.getElementById("hora");
divTime.innerHTML = resultado;
}
);
WS1.GetDataTable(
función (resultado)
{
//Obtener el control del cuadro desplegable
var Lista = document.getElementById("ddl1");
// AJAX November CTP necesita usar el método eval() para convertirlo en un objeto DataTable (y cortar el "()" inicial
var Texto= resultado.dataArray.substring(0,result.dataArray.length -1);
var Tabla = eval(Texto);
//AJAX diciembre CTP admite los siguientes métodos de conversión
// var Tabla = Sys.Preview.Data.DataTable.parseFromJson(resultado);
//Borrar los elementos de la lista original del cuadro desplegable
para (x=Lista.opciones.longitud-1; x > -1; x--)
{
Lista.remove(0);
}
//Agrega datos de la tabla de datos obtenida al elemento de la lista del cuadro desplegable
para (x=0; x < Longitud.tabla; x++ )
{
//Obtienes cada fila
var Fila = Tabla[x];
//Crear un elemento de lista
opción var = document.createElement("opción");
//El elemento de la lista muestra la asignación de texto
opción.texto = Fila.Nombre + " " + Fila.Apellido;
//Asignación de valores de opciones de elementos de lista
option.value = Row.Email;
//Determina el tipo de navegador y agrega elementos
si ( window.navigator.appName.toLowerCase().indexOf("microsoft") > -1)
Lista.add(opción);
demás
Lista.add(opción, nulo);
}
}
);
}
Código de muestra: http://www.cnblogs.com/heekui/archive/2007/01/10/616332.html