Click here to Skip to main content
15,891,372 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
How to use ajax with handler in asp.net.
and i want to return result as JSON and handle in ajax response.
Posted

 
Share this answer
 
Comments
Joezer BH 5-Feb-13 3:30am    
5+
I think you need to read
Simple JSON Handler for ASP.NET 2.0 to Implement AJAX Functionality[^]


Hope it helps.
--Amit
 
Share this answer
 
Comments
Joezer BH 5-Feb-13 3:31am    
5+
_Amy 6-Feb-13 3:36am    
Thanks Edo. :)
JavaScript
$(document).ready(function () {
         var param = { action: 'AllCategories' };
         var actionData = JSON.stringify(param);
         
         $.ajax({
            url: "AjaxHandler.ashx", // ?action=AllCategories
            data: { action: 'AllCategories' },
            dataType: '',
            success: SuccessCall_AJAXCall_Category
         });      });




AjaxHandler.ashx

C#
case "AllCategories":
               DataSet dsCategories = TaskUtilities.GetCategories();
               if (dsCategories != null && dsCategories.Tables.Count > 0)
               {
                  dsCategories.Tables[0].TableName = "Tbl_Category";
                  context.Response.Write(Serialize.ToJson(dsCategories.Tables[0]));
               }
               break;

Serialize.cs

 public static string ToJson(DataTable dtFilteredData)
        {
            var jsonData = new StringBuilder();

            try
            {
                string[] tmp = dtFilteredData.TableName.Split('_');

                jsonData.Append("\"tbl_" + tmp[1].ToLower() + "\":[");

                foreach (DataRow row in dtFilteredData.Rows)
                {
                    jsonData.Append("{");
                    foreach (DataColumn col in dtFilteredData.Columns)
                    {
                        jsonData.Append("\"" + col.ColumnName.ToLower() + "\":\"");
                        if (col.DataType.ToString() == "System.DateTime")
                            jsonData.Append(Convert.ToDateTime(row[col]).ToString("dd MMM yyyy hh:mm:ss t\\M") + "\",");
                        else
                        {
                            jsonData.Append(row[col].ToString().Replace("\\", "\\\\").Replace("\"", "\\\"") + "\",");
                        }
                    }
                    string tmp1 = jsonData.ToString();
                    jsonData.Remove(0, tmp1.Length);

                    jsonData.Append(tmp1.Substring(0, tmp1.LastIndexOf(",", System.StringComparison.Ordinal)));
                    jsonData.Append("},");
                }
                string tmp2 = jsonData.ToString();
                jsonData.Remove(0, tmp2.Length);
                jsonData.Append(tmp2.Substring(0, tmp2.LastIndexOf(",", System.StringComparison.Ordinal)));
                jsonData.Append("]");
            }
            catch
            {
                return string.Empty;
            }

            return jsonData.ToString();
        }
    }
jScript.cs

JavaScript
function SuccessCall_AJAXCall_Category(data) {
   // debugger;
   var ddl = $('select[id$=ddlCategories]');
   ddl.html("");
   var options = ''; // '<option value = 0>All</option>';
   //Data have only data with name tbl_continents not in valid format so i added flower brackets before and after. for validation of json Use "http://jsonlint.com/"
   // console.log(data);
   var jsval = $.parseJSON('{' + data + '}');
   // debugger;
   var tabCategory = jsval.tbl_category; // all small letters

   for (var i = 0; i < tabCategory.length; i++) {
      options += '<option value="' + tabCategory[i].ntaskcategoryid + '">' + tabCategory[i].strcategorytext + '</option>'; // field names, all small letters
   }
   // $("#ddlCategories").html(options); // --- HTML Control
   ddl.html(options); // --- Server Control

};
 
Share this answer
 
v2

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900