Servicios web en .NET que devuelven JSON y cómo llamarlos desde jQuery

ASP .NET permite crear servicios web de manera muy sencilla, que devuelven el resultado en formato XML, pero hoy en día muchos desarrolladores prefieren que sus servicios web devuelvan los resultados en formato JSON y poder utilizar jQuery para hacer las llamadas.
Programando nuestros servicios web en .NET, podemos conseguir de manera muy sencilla que devuelvan el resultado también en formato JSON. Únicamente tendremos que añadir el atributo ScriptService a la clase que contiene nuestros servicios.
[WebService(Namespace = "http://www.midominio.es/miNamespace")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class WSTest : System.Web.Services.WebService {
   [WebMethod]
   public string DimeHola(string nombre) {
      return "Hola " + nombre;
   }
}
Sólo con esto, nuestro servicio ya es capaz de devolver los resultados en formato JSON. Si el servicio devuelve un objeto, .NET se encargará de transformar la respuesta a formato JSON.
Pero para que nuestro servicio devuelva el resultado en el formato que esperamos es necesario que indiquemos «application/json; charset=utf-8» en la cabecera HTTP «contet-type» antes de realizar la petición.
<html>
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" />
    <script type="text/javascript">
      function calculate() {
        $.ajax({
          type: "POST",
          url: "WSTest.asmx/DimeHola",
          data: nombre: 'Pepe'}",
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function(response) { alert(response); },
          error: function(XMLHttpRequest, textStatus, error) {alert("Error");}
        });
      }
    </script>
  </head>
  <body>
    <a href="#" onclick="calculate()">Calculate</a>
  </body>
</html>

Con pocos cambios, .NET nos permite hacer que nuestro servicio web sea compatible con peticiones SOAP y JSON al mismo tiempo.

Nuestra puntuación
Twittear
Compartir
Compartir
Pin