ajax c# example (예제)

비동기 방식인 Ajax를 많이 사용하시지요. Ajax 기술이 없는 예전에는 Iframe으로 비동기 방식인것처럼 했었던 기억이 나네요...ㅎ


오늘은 Ajax 호출시 .net(c#) 비하인드코드(Behind Code)에서 인자(parameter)를 어떻게 받아 처리하는지에 대해서 알아보겠습니다. ajax c# example (예제) 시작합니다.



▶ Class로 받기

첫번째는 인자(parameter)를 비하인드코드(Behind Code)에서 class로 받는 방식 입니다.

먼저 .aspx의 소스를 보시겠습니다.
var data = new Object();
                    data.
control1 = $("#<%=control1.ClientID%>").val()
                    var json_data = JSON.stringify({ data: data });

                    $.ajax({
                        type: "POST",
                        url: "AjaxPage.aspx/AjaxCallMathod",
                        data: json_data,
                        contentType: "application/json; charset=utf-8",
                        dataType: "json",
                        async: true,
                        beforeSend: function () {
                            // Ajax 호출 전 발생해야 액션
                        },
                        success: function (result) {
                            // Ajax 호출 성공

                        },
                        failure: function (response) {
                            alert(response.d);
                        }
                    });

위와 같이 Ajax 호출을 합니다. 그러면서 control1의 값을 Json 형태의 인자로 넘깁니다.

그리고 C# 백단인 비하인드코드(Behind Code)에서는 아래와 같이 작성 하시면 됩니다.
[System.Web.Services.WebMethod]
        [System.Web.Script.Services.ScriptMethod]
        public static string[] 
AjaxCallMathod(GetListParm data)
        {
            JsonMaker jm = new JsonMaker();
            String[] rtnStr = new String[2];

            try
            {
                DBLib.DacLibrary _dacLib = new DBLib.DacLibrary();

                // 프로시져 호출
                DataSet ib2_ds = _dacLib.DsReturnS(300, false
                    , "프로시져명"
                    , data.
control1
                );

                rtnStr[0] = string.Empty;
                rtnStr[0] = jm.getSearchJSON(ib2_ds.Tables[0]);
                rtnStr[1] = ib2_ds.Tables[1].Rows[0]["REV_COUNT"].ToString();
            }
            catch (Exception ex)
            {
                jm.addJSON("message", ex.Message);
                rtnStr[0] = jm.getSaveJSON(-1);
            }
            finally
            {
                GC.Collect();
            }

            return rtnStr;
        }

        // 변수를 받는 class

        public class GetListParm
        {
            public string 
control1 { get; set; }
        }



▶ Header로 받기

두번째는 page Header을 이용해서 주고 받는 방식 입니다.

.aspx 소스의 내용은 아래와 같습니다.
var actionUrl = "AjaxPage.aspx";
                            actionUrl += "?SHEET_FUNCTION=REVDELETE_ib2";
                            actionUrl += "&
control1=" + $("#<%=control1.ClientID%>").val();
                            $.ajax({
                                type: "POST"
                                , async: true
                                , dataType: "json"
                                , url: actionUrl
                                , data: ""
                                , beforeSend: function (req) {

                                    // Ajax 호출 전 발생해야 액션
                                    req.setRequestHeader("IBUserAgent", "IBSHEET");
                                }
                                , success: function (
result) {
                                    // Ajax 호출 성공
                                    if (
result["Result"]["Code"] != 10) {
                                        alert(
result["message"]);
                                        return;
                                    }
                                    else {
                                        //
화면 reload
                                        reload();
                                    }
                                }
                                , error: function (data, status, err) {
                                    alert(data.responseText);
                                }
                                , complete: function (jqXHR, textStatus) {

                                    // Ajax 호출 마지막에 실행되는 액션
                                    // 함수 실행
                                }
                            });


위와 같이 Ajax 호출을 합니다. 그러면서 control1의 값을 Get방식을 넘깁니다.

* Get 방식에는 길이 제한이 있습니다. 하여 인자가 너무 길다면 setRequestHeader를 이용해서 긴 인자의 값들은 Header을 이용해서 넘기는것이 좋습니다.

다음으로 C# 백단인 비하인드코드(Behind Code)에서는 아래와 같이 작성 하시면 됩니다.
protected void Page_Load(object sender, EventArgs e)
        {
            // IB Sheet
            string agent = Convert.ToString(Request.Headers.Get("IBUserAgent"));
            if (agent == "IBSHEET")
            {
                string res = "";
                string method = Convert.ToString(Request["SHEET_FUNCTION"]);

                switch (method)
                {
                    case "REVDELETE_ib2":
                        res = this.DeleteRev_ib2(this.Request.Params);
                        break;
                }

                this.Response.Write(res);
                this.Response.End();
            }
            else
            {
                if (!IsPostBack)
                {
                    ProjectCode = ReturnCookie("ProjectCode");
                }
            }
        }


private string DeleteRev_ib2(System.Collections.Specialized.NameValueCollection parameters)
        {
            JsonMaker jm = new JsonMaker();
            int code = 10;

            try
            {
                BeginTransactionS();

                String[] arrControl1 = parameters.GetValues("control1");
                for (int i = 0; i < arrControl1.Length; i++)
                {
                    string _str
Control1 = arrControl1[i];
                    if (_strControl1 .Equals("1"))
                    {

                        // 프로시저 호출
                        ExecuteNonQueryS("프로시저명"
                            , 
_strControl1
                            );
                    }
                }

                jm.addJSON("message", "Successfully deleted!");
                CommitTransactionS();
            }
            catch (Exception err)
            {
                RollbackTransactionS();
                jm.addJSON("message", err.Message);
            }


            return jm.getSaveJSON(code);
        }


이렇게 두가지 방식을 알아보았습니다.
마음에 드시는 방법으로 이용해주시고 도움이 되셨다면 좋겠네요...ㅎ
이상으로 ajax c# example (예제)에 대해서 마치겠습니다.

댓글

이 블로그의 인기 게시물

껌 떼는 법 (완벽 제거)

석청 효능 및 석청 부작용 알아보기

인성검사 팁 (인성검사 합격)