아래 포스팅의 JSONP 적용 예제
* C# 코드
1 public class TestServiceController : Controller
2 {
3 [HttpPost]
4 public ActionResult Method2()
5 {
6 List<TestData1> data = new List<TestData1>();
7 data.Add(new TestData1()
8 {
9 Name = "이름",
10 UID = long.MaxValue,
11 ID = "sikuru",
12 Time = DateTime.Now,
13 });
14 data.Add(new TestData1()
15 {
16 Name = "이름2",
17 UID = long.MinValue,
18 ID = "sikuru2",
19 Time = DateTime.Now,
20 });
21
22 return Common.JsonpResult.Jsonp(data, JsonRequestBehavior.DenyGet);
23 }
24 }
* Javascript 코드 (jQuery)
1 $("#button2").click(function() {
2 $.ajax({
3 url: "/TestService/Method2",
4 type: "POST",
5 dataType: "jsonp",
6 success: function (data) {
7 //alert(data);
8 var output_data = "";
9 for (var item in data)
10 {
11 for (var key in data[item])
12 {
13 if (key == "Time")
14 {
15 var date = new Date(parseInt(data[item][key].substr(6)));
16 output_data += "KEY=" + key + " / DATE_VALUE=" + date + "<br>";
17 }
18 else
19 {
20 output_data += "KEY=" + key + " / VALUE=" + data[item][key] + "<br>";
21 }
22 }
23 }
24
25 $("#output1").append(output_data);
26 }
27 });
28 }); // button2 click
- 2012/01/16 00:23
- 프로그래밍
- whiteberry.egloos.com/3793818
- 0 comments
- 2012/01/12 21:28
- 프로그래밍
- whiteberry.egloos.com/3792494
- 2 comments
jQuery ajax 등을 이용해서 Jsonp 요청을 했을 때, MVC 3 에서 응답용으로 사용하기 위한 클래스...
Jsonp 에 관한 내용은 두 링크 참조
* JSONP를 사용한 도메인 간 통신, Part 1: JSONP와 jQuery의 결합으로 강력한 매시업 빠르게 만들기
* JSONP
1 public class JsonpResult : JsonResult
2 {
3 public static JsonpResult Jsonp(object data)
4 {
5 return new JsonpResult()
6 {
7 Data = data,
8 };
9 }
10
11 public static JsonpResult Jsonp(object data, JsonRequestBehavior json_request_behavior)
12 {
13 return new JsonpResult()
14 {
15 Data = data,
16 JsonRequestBehavior = json_request_behavior,
17 };
18 }
19
20 public string Callback { get; set; }
21
22 public override void ExecuteResult(ControllerContext context)
23 {
24 if (context == null)
25 {
26 throw new ArgumentNullException();
27 }
28
29 if (Callback == null)
30 {
31 Callback = context.HttpContext.Request.QueryString["callback"];
32 }
33
34 context.HttpContext.Response.ContentType = "application/javascript";
35
36 if (ContentEncoding != null)
37 {
38 context.HttpContext.Response.ContentEncoding = ContentEncoding;
39 }
40
41 if (Data != null)
42 {
43 JavaScriptSerializer jss = new JavaScriptSerializer();
44 StringBuilder sb = new StringBuilder();
45
46 sb.Append(Callback);
47 sb.Append("(");
48 jss.Serialize(Data, sb);
49 sb.Append(");");
50
51 context.HttpContext.Response.Write(sb.ToString());
52 }
53 }
54 }
- 2012/01/10 22:51
- 프로그래밍
- whiteberry.egloos.com/3791579
- 0 comments
ASP.NET MVC 3 부터는 JSON 을 통한 연동 부분이 매우매우 편리해진 덕에 이런 간단한 코드로 연동 코드가 가능...
친절하게도 배열로 된 JSON 오브젝트는 List 컨테이너에 담아주기까지 하고, 같은 이름을 가진 클래스에 맵핑까지 해준다. (대소문자 구분 안함)
* Javascript 코드
1 $("#button1").click(function()
2 {
3 // 테스트 JSON 오브젝트 배열.
4 var obj = [{
5 name: "sikuru ?",
6 uid: 49392010,
7 }, {
8 name: "시쿠루 ?",
9 uid: 49392011,
10 }];
11
12 $.ajax({
13 url: "/TestService/Method1",
14 type: "POST",
15 data: JSON.stringify(obj),
16 contentType: "application/json; charset=utf-8", // 이걸 빼먹으니 인식이 안되더라...
17 success: function (data){
18 var output_data = "";
19 for (var item in data)
20 {
21 for (var key in data[item])
22 {
23 if (key == "Time")
24 {
25 // 뭔가 이상해보이기도 하지만... JSON 에 넘어온 시간값을
26 // Javas-ript 의 Date 객체로 전환하는 방법 중 하나... 근데 이래도 되나 ?
27 var date = new Date(parseInt(data[item][key].substr(6)));
28 output_data += "KEY=" + key + " / DATE_VALUE=" + date + "<br>";
29 }
30 else
31 {
32 output_data += "KEY=" + key + " / VALUE=" + data[item][key] + "<br>";
33 }
34 }
35 }
36
37 $("#output1").append(output_data);
38 }
39 });
40 });
* C# ASP.NET MVC 3 코드
친절하게도 배열로 된 JSON 오브젝트는 List 컨테이너에 담아주기까지 하고, 같은 이름을 가진 클래스에 맵핑까지 해준다. (대소문자 구분 안함)
* Javascript 코드
1 $("#button1").click(function()
2 {
3 // 테스트 JSON 오브젝트 배열.
4 var obj = [{
5 name: "sikuru ?",
6 uid: 49392010,
7 }, {
8 name: "시쿠루 ?",
9 uid: 49392011,
10 }];
11
12 $.ajax({
13 url: "/TestService/Method1",
14 type: "POST",
15 data: JSON.stringify(obj),
16 contentType: "application/json; charset=utf-8", // 이걸 빼먹으니 인식이 안되더라...
17 success: function (data){
18 var output_data = "";
19 for (var item in data)
20 {
21 for (var key in data[item])
22 {
23 if (key == "Time")
24 {
25 // 뭔가 이상해보이기도 하지만... JSON 에 넘어온 시간값을
26 // Javas-ript 의 Date 객체로 전환하는 방법 중 하나... 근데 이래도 되나 ?
27 var date = new Date(parseInt(data[item][key].substr(6)));
28 output_data += "KEY=" + key + " / DATE_VALUE=" + date + "<br>";
29 }
30 else
31 {
32 output_data += "KEY=" + key + " / VALUE=" + data[item][key] + "<br>";
33 }
34 }
35 }
36
37 $("#output1").append(output_data);
38 }
39 });
40 });
* C# ASP.NET MVC 3 코드
1 public class TestData1
2 {
3 public string Name { get; set; }
4 public long UID { get; set; }
5 public string ID { get; set; }
6 public DateTime Time { get; set; }
7 }
8
9 public class TestServiceController : Controller
10 {
11 [HttpPost]
12 public ActionResult Method1(List<TestData1> recv_data)
13 {
14 List<TestData1> data = new List<TestData1>();
15 data.Add(new TestData1()
16 {
17 Name = "이름",
18 UID = long.MaxValue,
19 ID = "sikuru",
20 Time = DateTime.Now,
21 });
22
23 return Json(data, JsonRequestBehavior.DenyGet);
24 }
25 }
2 {
3 public string Name { get; set; }
4 public long UID { get; set; }
5 public string ID { get; set; }
6 public DateTime Time { get; set; }
7 }
8
9 public class TestServiceController : Controller
10 {
11 [HttpPost]
12 public ActionResult Method1(List<TestData1> recv_data)
13 {
14 List<TestData1> data = new List<TestData1>();
15 data.Add(new TestData1()
16 {
17 Name = "이름",
18 UID = long.MaxValue,
19 ID = "sikuru",
20 Time = DateTime.Now,
21 });
22
23 return Json(data, JsonRequestBehavior.DenyGet);
24 }
25 }
- 2011/12/31 23:59
- 일상메모
- whiteberry.egloos.com/1969099
- 12 comments
- 2011/12/30 22:30
- 자동차이야기
- whiteberry.egloos.com/3786630
- 2 comments
2011년간 출퇴근으로 쓰면서 주유한 기록을 정산해봤습니다.
총 주행거리 ; 25940.9km
총 주유량 ; 2025리터
총 주유비용 ; 358만2864원
평균 연비 ; 리터당 12.8km
...하루 100km 짜리 출퇴근을 하고 있으니 은근 압박이네요. ( -_-)
여러가지 의미에서 디젤차를 타서 다행이야. 라고 생각합니다. (...)
수동차량이면 좋았을텐데. 라는 생각을 조금(사실 좀 많이-_-) 하고 있습니다.
총 주행거리 ; 25940.9km
총 주유량 ; 2025리터
총 주유비용 ; 358만2864원
평균 연비 ; 리터당 12.8km
...하루 100km 짜리 출퇴근을 하고 있으니 은근 압박이네요. ( -_-)
여러가지 의미에서 디젤차를 타서 다행이야. 라고 생각합니다. (...)
수동차량이면 좋았을텐데. 라는 생각을 조금(사실 좀 많이-_-) 하고 있습니다.









최근 덧글