2015-01-22 5 views
0

나는 영화 데이터베이스를 가지고 있는데, 나는 Json을 만들고, 내보기에서 그 json에 접근하려고한다. 나는 성공적으로 다음 코드를 사용하여 컨트롤러 내에서 JSON을 만든 : 이것은를 WriteLine을 통해 콘솔에 전달 가지고 JSON을 생성컨트롤러에서보기로 Json 전달하기

var movies = from m in db.Movies 
        select m; 

    string jsonData = JsonConvert.SerializeObject(movies); 

를, 그리고 다음 JSON 생성

[{"ID":1,"Title":"When Harry Met Sally","ReleaseDate":"1989-01-11T00:00:00","Genre":"Romantic Comedy","Price":7.99,"Rating":"PG","Review":79.90}, 
{"ID":2,"Title":"Ghostbusters ","ReleaseDate":"1984-03-13T00:00:00","Genre":"Comedy","Price":8.99,"Rating":"PG","Review":94.90},  
{"ID":3,"Title":"Ghostbusters 2","ReleaseDate":"1986-02-23T00:00:00","Genre":"Comedy","Price":9.99,"Rating":"15","Review":89.90}, 
{"ID":4,"Title":"Rio Bravo","ReleaseDate":"1959-04-15T00:00:00","Genre":"Western","Price":3.99,"Rating":"U","Review":91.90}, 
{"ID":5,"Title":"The Hangover","ReleaseDate":"2008-01-01T00:00:00","Genre":"Comedy","Price":9.99,"Rating":"18","Review":83.80}, 
{"ID":6,"Title":"Test","ReleaseDate":"2013-06-01T00:00:00","Genre":"Action","Price":10.00,"Rating":"18","Review":89.00}] 

을 그런 다음 내 생각에 그 json에 액세스하여 내 견해에 인쇄하고 싶습니다. 다음 Ajax 코드를 시도했지만 json 데이터를 표시 할 수 없습니다.

<button id="test">Test</button> 
<div class="inner"></div> 

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#test').on('click', function(){ 
     $.ajax({ 
     url: '@Url.Action("Index", "Movies")', 
     dataType: 'json', 
     context: document.body 
    }).done(function(serverdata) { 
     jsonData = serverdata; 
     $.each(jsonData, function(i, item) { 
      $(".inner").append("<p>" + jsonData + "</p>"); 
     }); 
    }); 
}); 
}); 
</script> 

아이디어가 있으십니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

$ (". inner"). append ("

"+ jsonDa ta + "

"); jsonData가 항목이어야하지 않습니까? – Hoijof

답변

1

는이 작업을 수행 할 수 있습니다

액션 코드 :

[HttpGet] 
public JsonResult Index(int? PageId) 
{ 
    //other your code goes here 
    var movies = from m in db.Movies 
       select m; 
    return Json(new {result = movies}),JsonRequestBehavior.AllowGet); 
} 

클라이언트 코드 :

$.ajax({ 
     type: "GET", 
     url: '@Url.Action("Index", "Movies")', 
     dataType: 'json', 
     content: "application/json", 
     cache : false 
    }).done(function (serverdata) { 
     if(result.result.length > 0) 
     { 
      $.each(result.result, function(i, item) { 
       $(".inner").append("<p>" +"ID: "+ item.ID +", Title :" + item.Title+ "</p>"); 
      }); 
     } 
     else 
     { 
      alert("No movies in result"); 
     } 
    }).fail(function (jqXHR, textStatus) { 
     alert("Internal server error." + "\n" + jqXHR.statusText); 
    }); 
+0

감사합니다. 그게 효과가 있었어. 그냥 변경해야했다 : return Json (new {result = movies}), JsonRequestBehavior.AllowGet); ~ return Json (new {result = movies}, JsonRequestBehavior.AllowGet); – user1121477

+0

클라이언트 측 코드가 실제로 아무 것도하지 않는 것처럼 보입니다. json 만 페이지에 표시되며 ajax 요청은 아무 것도 변경하지 않습니다. 아약스가 스타일을 제어하고 json의 위치를 ​​제어 할 수있게하려면 변경해야 할 것이 있습니까? – user1121477

+0

json의 스타일과 위치? – aleha

0

시도 : - 우리는 ASP.NET MVC에 대해 이야기하는 경우

<script type="text/javascript"> 
    $(document).ready(function() { 
    $('#test').on('click', function(){ 
     $.ajax({ 
     url: '@Url.Action("Index", "Movies")', 
     method: 'GET', 
     dataType: 'json', 
     context: document.body 
     }).done(function(serverdata) { 
     var jsonData = serverdata; 
     $.each(jsonData, function(i, item) { 
     $(".inner").append("<p>" +"ID: "+ item.ID +", Title :" + item.Title+ "</p>"); 
     }); 
    }); 
    }); 
}); 
</script> 
관련 문제