.Net
ASP.NET MVC Jsonp 사용하기
subinpapa
2020. 7. 24. 09:39
- JsonpResult Class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
/// <summary>
/// ASP.NET MVC JsonpResult : ActionResult
/// </summary>
public class JsonpResult : ActionResult
{
public string CallbackFunction { get; set; }
public Encoding ContentEncoding { get; set; }
public string ContentType { get; set; }
public object Data { get; set; }
public JsonpResult(object data) : this(data, null) { }
public JsonpResult(object data, string callbackFunction)
{
Data = data;
CallbackFunction = callbackFunction;
}
public override void ExecuteResult(ControllerContext context)
{
if (context == null) throw new ArgumentNullException("context");
HttpResponseBase response = context.HttpContext.Response;
response.ContentType = string.IsNullOrEmpty(ContentType) ? "application/x-javascript" : ContentType;
if (ContentEncoding != null) response.ContentEncoding = ContentEncoding;
if (Data != null)
{
HttpRequestBase request = context.HttpContext.Request;
var callback = CallbackFunction ?? request.Params["callback"] ?? "callback";
var serializer = new JavaScriptSerializer();
response.Write(string.Format("{0}({1});", callback, serializer.Serialize(Data)));
}
}
}
|
cs |
- SampleController.GetDataSample
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class SampleController
{
public JsonpResult GetDataSample(String id)
{
Hashtable rtn = new Hashtable();
rtn.Add("Code", "code");
rtn.Add("Data", "Data");
rtn.Add("Message", "Message");
return new JsonpResult(rtn);
}
}
|
cs |
- Jquery Call
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
var url = "http://sample/Sample/GetDataSample";
var data = { id: "1" };
$.ajax({
type:"GET"
, url: url
, dataType: "jsonp"
, data: data
, cache: false
, success: function (data, status) {
console.log(status);
console.log(data.Code);
console.log(data.Data);
console.log(data.Message);
}
, error: function (request, status, error) {
console.log("error");
}
});
|
cs |