Después de ver cómo se puede consumir un servicio de ADO.NET Data Services desde una aplicación WinForm, ahora toca ver cómo puede hacerse lo mismo desde Ajax.
Para poder acceder desde Ajax es necesario referenciar la versión 3.6.0.0 de System.Web.Extensions. Asegúrate que en el proyecto tienes referenciada la versión adecuada.
Esta versión se incluye con ASP.NET 3.5 Extensions Preview. ( incluye el fichero MicrosoftAjaxDataService.js que es necesario para poder consumir el servicio de ADO.NET Data Services ).
Si el proyecto que has creado usa la versión 3.05.00, en el fichero de configuración Web.Config puede cambiarlo para que empiece a usar la 3.06.00.
<dependentAssembly>
<assemblyIdentity name=»System.Web.Extensions» publicKeyToken=»31bf3856ad364e35«/>
<bindingRedirect oldVersion=»3.5.0.0» newVersion=»3.6.0.0«/>
</dependentAssembly>
Para acceder al servicio es necesario se hace uso de Sys.Data.DataService.
function doQuery() {
var northwindService = new Sys.Data.DataService(«/NorthwindService.svc«); northwindService.query(«/Customers«, cbSuccess, cbFailure);
}
( cbSuccess y cbFailure son las funciones de callback a las que se llamará en caso de que todo vaya bien o de que haya algún error )
Es importante tener en cuenta, que sólo se permite llamar a servicios que estén en el mismo dominio..
function cbFailure(error, context, operation) {
$get(«spanResults«).innerHTML = «Error » + operation + «.»;
}
function cbSuccess(result, context, operation) {
var sb = new Sys.StringBuilder();
sb.append(«<table>«);var firstRowOutput = false;
for (idx in result) {
var customer = result[idx];
if (!firstRowOutput) {
sb.append(«<tr>«);
for (key in customer) {
if (key != «__metadata«) {
sb.append(«<th>«);
sb.append(key);
sb.append(«</th>«);
}
}
sb.append(«</tr>«);
firstRowOutput = true;
}
sb.append(«<tr>«);
for (key in customer) {
if (key != «__metadata«) {
sb.append(«<td>«);
sb.append(customer[key]);
sb.append(«</td>«);
}
}
sb.append(«</tr>«);}
sb.append(«</table>«);
$get(«spanResults«).innerHTML = sb.toString();
}
En este caso podemos observar que el formato de los datos es JSON.