Tuesday, October 6, 2009

Httphandler to retrive data and return it in JSON format

using System.Web.Script.Serialization;

///
/// Created by Wilmer F. Pascual
///
public class getdata : IHttpHandler
{
const string JSON_ARRAY = "[{0}]";
const string JSON_RECORD = "{{0}}";
const string JSON_KEYVALUE = "\"{0}\":\"{1}}\"";
const string COMMA = ",";

///
/// Retrieve Subcategories for the specified Category
///
///
void GetSubCategories(HttpContext context)
{
int parentCategoryId = int.Parse(context.Request.QueryString[Classes.Constants.QS_CATID]);
IEnumerable subCats = Classes.SubCategory.GetAll(parentCategoryId);
JavaScriptSerializer jSer = new JavaScriptSerializer();
string jsonData = jSer.Serialize(subCats);

context.Response.ContentType = "application/json";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Write(jsonData);
context.Response.End();
}

public void ProcessRequest(HttpContext context)
{
if (context.Request.QueryString[Classes.Constants.QS_CATID] != null)
{
GetSubCategories(context);
}
}

public bool IsReusable
{
get
{
return false;
}
}
}



....
the data return can then be used by jquery (ex. used in cascading dropdown list Category -> Subcategories)

$(document).ready(function()
{
$("#").change(function()
{
$("#").html("");
$("#").attr("disabled", "disabled");
$("#").append($("").val('').html('loading...'));
var catId = $("#").attr("value");
if(isNaN(catId)) return;
$.getJSON('http://?catid=' + catId, function(sucats)
{
$("#").html("");
$.each(sucats, function() {
$("#").append($("").val(this['CategoryId']).html(this['CategoryName']));
});
});
$("#").attr("disabled", "");
})
});


Share/Save/Bookmark

No comments:

Post a Comment