ajax c# example (예제)
비동기 방식인 Ajax를 많이 사용하시지요. Ajax 기술이 없는 예전에는 Iframe으로 비동기 방식인것처럼 했었던 기억이 나네요...ㅎ
먼저 .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; }
}
.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 _strControl1 = 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 (예제)에 대해서 마치겠습니다.
오늘은 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 _strControl1 = 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 (예제)에 대해서 마치겠습니다.
댓글
댓글 쓰기