<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Bajo sus alas &#124; Version Geek &#187; JQuery</title>
	<atom:link href="http://bajosusalas.wordpress.com/category/jquery/feed/" rel="self" type="application/rss+xml" />
	<link>http://bajosusalas.wordpress.com</link>
	<description>Versión Geek de Bajo Sus Alas, el blog de Andrea</description>
	<lastBuildDate>Tue, 23 Jun 2009 15:32:53 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='bajosusalas.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/142ed69b9c82b8f85f9979babe4e088f?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Bajo sus alas &#124; Version Geek &#187; JQuery</title>
		<link>http://bajosusalas.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://bajosusalas.wordpress.com/osd.xml" title="Bajo sus alas | Version Geek" />
		<item>
		<title>Usando JQuery AJAX con .NET</title>
		<link>http://bajosusalas.wordpress.com/2008/07/10/usando-jquery-ajax-con-net/</link>
		<comments>http://bajosusalas.wordpress.com/2008/07/10/usando-jquery-ajax-con-net/#comments</comments>
		<pubDate>Thu, 10 Jul 2008 01:38:45 +0000</pubDate>
		<dc:creator>Andrea</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[JQuery]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ashx]]></category>
		<category><![CDATA[handler]]></category>
		<category><![CDATA[json]]></category>

		<guid isPermaLink="false">http://bajosusalas.wordpress.com/?p=14</guid>
		<description><![CDATA[Claro que Uds. se preguntan que corcho tiene que ver una libreria de JS contra un lenguaje server side? Bueno, hay un motivo   EN realidad esto apunta hacia el uso de los metodos AJAX de la JQuery.
Como algunos saben, ASP.NET es un motor montado &#8220;sobre&#8221; el framework de .NET. Como motor, tiene muchas [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bajosusalas.wordpress.com&blog=3986683&post=14&subd=bajosusalas&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Claro que Uds. se preguntan que corcho tiene que ver una libreria de JS contra un lenguaje server side? Bueno, hay un motivo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  EN realidad esto apunta hacia el uso de los metodos AJAX de la JQuery.</p>
<p>Como algunos saben, ASP.NET es un motor montado &#8220;sobre&#8221; el framework de .NET. Como motor, tiene muchas cosas (manejo de sesiones, Requests, themes,  skins, autenticacion, etc etc) que en realidad se ejecutan cada vez que ejecutamos una pagina ASPX. </p>
<p>Entonces, supongamos que nosotros queremos hacer un metodo que nos devuelva un objeto JSON </p>
<pre>{"name":"Pepe","surname":"Gomez","message":"Hi world"}</pre>
<p>Para hacer eso, tranquilamente podriamos hacer una pagina .ASPX que tuviera el Response.Write que necesitamos, no hay nada malo en hacer eso. Y despues con la JQuery tomarlo. Pero que pasa? Usando un ASPX estamos probablemente usando modulos que no necesitamos para algo tan sencillo como ir al server y volver.</p>
<p>Para eso, se recomienda usar los User Handled Modules (.ashx). Estos archivos no tienen toda la bocha de modulos que se cargan por default en los ASPx, y sin embargo, se puede usar todo el framework como si fuera una clase en C#/VB.net. La parte &#8220;mala&#8221; es que, al no tener &#8220;dos capas&#8221; como tiene ASP.NET (una capa de presentacion y la capa de code-behind), tenemos que &#8220;escupir&#8221; el HTML o los objetos usando Response.Write.</p>
<pre>using System;
using System.Web;
using System.Web.SessionState;

public class Handler : IHttpHandler , <strong>IReadOnlySessionState</strong>{

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/html";
        context.Response.Write("Hello World");
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}</pre>
<p>Entonces nuestro codigo quedaria algo asi:</p>
<h3>Pagina Nombre.aspx</h3>
<pre><!--mce:0-->&lt;script&gt;
function actualizar() {
 $.getJSON("miHandler.ashx",
        function(data){
          $("#prueba").html ( data.name + " - " + data.message);
       });
}
&lt;/script&gt;
<div id="prueba">&lt;input onclick="actualizar()" type="button" value="Voy a ejecutar eso" /&gt;</div>
</pre>
<h3>Handler miHandler.ashx</h3>
<pre>using System;
using System.Web;
using System.Web.SessionState;

public class Handler : IHttpHandler , IReadOnlySessionState{

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Write(" {\"name\":\"Pepe\",\"surname\":\"Gomez\",\"message\":\"Hi world\"} ");
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}</pre>
<p>Si necesitan (por algun motivo) acceder a la sesion dentro del Generic Handler, no se olviden de implementar la interface <strong>IReadOnlySessionState</strong>, de otra forma, el objecto <em>context.Session</em> es null. Si necesitan acceso de lectura y escritura, deberian implementar <strong>IRequiresSessionState</strong> .</p>
<p>Y para acceder al Request (para recuperar parámetros por ej) pueden usar <em>context.Request</em></p>
<p>Mas informacion</p>
<ul>
<li><a href="http://www.aspcode.net/Creating-an-ASHX-handler-in-ASPNET.aspx">Devolver un XML al usuario usando un handler</a></li>
<li><a href="http://www.15seconds.com/issue/060406.htm">Debugear un archivo .ashx</a></li>
<li><a href="http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback">JQuery &#8211; GetJSON</a></li>
<li><a href="http://www.json.org/">JSON</a></li>
</ul>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/bajosusalas.wordpress.com/14/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/bajosusalas.wordpress.com/14/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bajosusalas.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bajosusalas.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bajosusalas.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bajosusalas.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bajosusalas.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bajosusalas.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bajosusalas.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bajosusalas.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bajosusalas.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bajosusalas.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bajosusalas.wordpress.com&blog=3986683&post=14&subd=bajosusalas&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://bajosusalas.wordpress.com/2008/07/10/usando-jquery-ajax-con-net/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e507865e111e73322762243568ae8308?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Andrea</media:title>
		</media:content>
	</item>
	</channel>
</rss>