문제
AJAX 호출을 통해 ASP.NET MVC를 사용하여 직렬화된 JSON 개체를 클라이언트 측에 어떻게 반환합니까?
해결책
컨트롤러에서 JsonResult를 반환할 수 있습니다.
public ActionResult MyAction()
{
... // Populate myObject
return new JsonResult{ Data = myObject };
}
물론 Ajax 호출 형식은 사용 중인 라이브러리에 따라 달라집니다.jQuery를 사용하면 다음과 같습니다.
$.getJSON("/controllerName/MyAction", callbackFunction);
어디에 callbackFunction
XHR 요청의 데이터인 매개변수를 사용합니다.
다른 팁
구문 기본 설정에 따라 다음도 작동합니다.
public ActionResult MyAction()
{
return Json(new {Data = myObject});
}
이것은 MVC 컨트롤러에서 JsonResults를 사용하는 방법을 이해하기 위한 작은 코드 블록입니다.
public JsonResult ASD()
{
string aaa = "Hi There is a sample Json";
return Json(aaa);
}
System.Web.Script.Serialization도 가능합니다.아래
using System.Web.Script.Serialization;
public ActionResult MyAction(string myParam)
{
return new JavaScriptSerializer().Serialize(myObject);
}
아약스
$.ajax({
type: 'POST',
url: '@Url.Action("MyAction","MyMethod")',
dataType: 'json',
contentType: "application/json; charset=utf-8",
data: JSON.stringify({ "myParam": "your data" }),
success: function(data)
{
console.log(data)
},
error: function (request, status, error) {
}
});
GET에 대한 응답으로 JSON을 보내야 하는 경우 JsonRequestBehavior.AllowGet을 사용하여 해당 동작을 명시적으로 허용해야 합니다.
public JsonResult Foo()
{
return Json("Secrets", JsonRequestBehavior.AllowGet);
}
제휴하지 않습니다 StackOverflow