JQuery AJAX Generic Handler

Use a generic Handler and ajax with jquery is very easy and usefull.

Usually the Gneric Handler will be used in GET also to create item or update an existing item.

GET:

$.ajax({
    type: "GET",
    cache: false,
    url: "RubricaHandler.ashx?action=save&PDS=" + $('#<%=TxBxPDS.ClientID %>').val() + "&Numero=" + $('#<%=TxBxNumero.ClientID %>').val()  + "&Utente=" + $('#<%= TxBxUtente.ClientID%>').val() + "&Gruppo=" + $('#<%= DDLGruppo.ClientID%>').val(),
    beforeSend: function () { },
    complete: function () { },
    error: function (xhr, status, errorThrown) {
        $("#errorResult").html(errorThrown + '\n' + status + '\n' + xhr.statusText);
    },
    success: function (result) {

        disableUI();
        $("#errorResult").html("");
        $("#operationResult").html("savaltaggio avvenuto con successo");
        setTimeout("window.parent.closeFancybox()", 1000);

        window.parent.$("#" + window.parent.btnSearchId).click();
    }
});

With only 5 parameter the code is difficult to read…

If we use a POST instead the code is more easy to write and more legible

$.ajax({
    type: "POST",
    dataType: "json",
    data: {
        PDS: $('#<%=TxBxPDS.ClientID %>').val(),
        Numero: $('#<%=TxBxNumero.ClientID %>').val(),
        Utente: $('#<%= TxBxUtente.ClientID%>').val(),
        Gruppo: $('#<%= DDLGruppo.ClientID%>').val(),
        Azienda: $('#<%= DDLAzienda.ClientID%>').val(),
        Divisione: $('#<%= DDLDivisione.ClientID%>').val(),
        Reparto: $('#<%= DDLReparto.ClientID%>').val(),
        Ufficio: $('#<%= DDLUfficio.ClientID%>').val(),
        Ente: $('#<%= DDLEnte.ClientID%>').val(),
        EL: $('#<%=CxBxEL.ClientID %>').is(":checked"),
        LT: $('#<%=TxBxLT.ClientID %>').val(),
        Servizi: $('#<%=TxBxServizi.ClientID %>').val(),
        Note: $('#<%=TxBxNote.ClientID %>').val(),
        IsNotAssegnato: $('#<%=CxBxNotAssigned.ClientID %>').is(':checked'),
        IdNumero: $('#<%=HiddenIdNumero.ClientID %>').val()
    },
    cache: false,
    url: "RubricaHandler.ashx?action=save",
    beforeSend: function () { },
    complete: function () { },
    error: function (xhr, status, errorThrown) {
        $("#errorResult").html(errorThrown + '\n' + status + '\n' + xhr.statusText);
    },
    success: function (result) {

        disableUI();
        $("#errorResult").html("");
        $("#operationResult").html("savaltaggio avvenuto con successo");
        setTimeout("window.parent.closeFancybox()", 1000);

        window.parent.$("#" + window.parent.btnSearchId).click();
    }
});

The code in the Generic Handler is the same:

public class RubricaHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            StringBuilder sb = new StringBuilder();
            context.Response.ContentType = "text/plain";
            string action = context.Request["action"].ToLower();

            using (SABDBDataContext SQlContext = new SABDBDataContext())
            {
                int IdArg;
                switch (action)
                {
                    case "getdivisione":
                        ...
                        break;
                    case "getreparto":
                        ...
                        break;
                    case "save":
                        var req = context.Request;

                        SQlContext.AddEditNumber(req["PDS"], req["Numero"], ConvertToNullString(req["Utente"]),
                            ConvertToId(req["Gruppo"]),
                            ConvertToId(req["Azienda"]), ConvertToId(req["Divisione"]),
                            ConvertToId(req["Reparto"]), ConvertToId(req["Ufficio"]), ConvertToId(req["Ente"]),
                            Convert.ToBoolean(req["EL"]), ConvertToNullString(req["LT"]), ConvertToNullString(req["Servizi"]), 
                            ConvertToNullString(req["Note"]), Convert.ToBoolean(req["IsNotAssegnato"]),
                            ConvertToId(req["IdNumero"]));
                        sb.Append("1");
                        break;
               }
            }

            context.Response.Write(sb.ToString());
        }

        // Helper

        double? ConvertToDouble(string val)
        {
            if (String.IsNullOrEmpty(val))
                return null;
            else
                return Convert.ToDouble(val);
        }

        int? ConvertToId(string Id)
        {
            try
            {
                if (String.IsNullOrEmpty(Id))
                    return null;
                else
                    return Convert.ToInt32(Id);
            }
            catch (Exception ex)
            {
                return null;
            }
        }

        string ConvertToNullString(string val)
        {
            if (String.IsNullOrEmpty(val))
                return null;
            else
                return val;
        }

    }

Annunci

Informazioni su Andrea Regoli

Project Manager .Net Developer WPF WP7 Asp.Net c# javascript ajax SQL sharepoint
Questa voce è stata pubblicata in .Net, Asp.Net, c#, jquery e contrassegnata con , , . Contrassegna il permalink.

2 risposte a JQuery AJAX Generic Handler

  1. This blog is so interesting. I felt moved by reading it!
    I think this place will become my most talked about site!

  2. Suraj Deshpande ha detto:

    Nice post, good work Andrea Regoli.
    Best wishes!!

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...