2013-05-01 3 views
1

나는이 액션 메티 드를 가지고 있습니다. JSON이 반환됩니다.액션 메소드에서 JSON 반환

public JsonResult Get() 
{ 
     ... 

     return new JsonResult { Data = data }, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
} 

그런 다음 액션 태그 가져 오기 방법을 가리키는 스크립트 태그가 있습니다.

<script type="text/javascript" src="@Url.Content("~/resource/get")"></script> 

문제는 JS 코드에서 JSON 데이터에 액세스 할 수 없다는 것입니다. 어떻게 든 JSON을 실행해야하는 것처럼 보입니다. 어떠한 제안 ?

+0

'return Json (data);가 될 수 있습니다. 맞습니까? :) –

+0

알아,하지만 당신은 어쨌든 JsonRequestBehavior를 설정해야합니다. – user49126

+0

그래서'[HttpGet]'속성으로 메소드를 꾸미지 않으시겠습니까? –

답변

2

당신은 jQuery를에서 작업을 호출 한 후 직접 JSON을 처리 할 수 ​​있습니다 :

$.ajax({ 
    dataType: "json", 
    url: "/resource/get", 
    success: function(data){ 
     var obj = JSON.parse(data); 
    } 
}); 

또는 짧은 버전 :

$.getJSON('/resource/get', function(data) { 
    var obj = data; 
}); 
+0

다른 방법이 있는지 궁금합니다. 아마 mvc html 도우미일까요? – user49126

+1

이런 식으로 잘못 되었나요? 해결해야 할 구체적인 요구 사항이 있습니까? Ajax를 통해 호출하는 대신 스크립트 참조로 왜 그렇게하고 싶는지 말해 줄 수 있습니까? – Kenneth

+0

JSON 개체를 최대한 빨리 준비하고 싶습니다. – user49126

1

당신은 별도의 요청없이, 최대한 빨리 사용할 수있는 JSON을 원하는 경우 초기 페이지로드에 포함 :

<script type="text/javascript"> 
    var myJson = @Html.Action("Get"); 
</script> 

이제에 액세스 할 수 있습니다.스크립트에서 데이터에 액세스 할 수있는 변수.

1

페이지가 서버에서 빌드 될 때 HTML에 덤프되도록하려면보기 모델에 추가 한 다음 페이지에서 직접 렌더링 할 수 있습니다. 다음은 의사 코드 예제입니다.

<script type="javascript"> 
    var obj= JSON.parse('@Model.PropertyContainingJson'); 
</script> 
관련 문제