2011-09-28 9 views
0

방금 ​​작동하는 asp.net mvc 2 app에서 일부 코드를 복사했습니다. 이제 asp.net mvc 3 시도하고 컨트롤러에 저장 메서드를 호출하지 않는?jquery 게시물 asp.net mvc 3에서 작동하지 않습니다?

컨트롤러 :

[HttpPost] 
    public JsonResult save(string inputdata) 
    { 
     return Json(new { Result = string.Format("From the controller - you have clicked the GO-button ! ") }, JsonRequestBehavior.AllowGet); 
    } 

보기 : 당신은 데이터를 올바르게 전달되지

<button id="but">go</button> 
<div id=result></div> 
<script type="text/javascript"> 

    $(document).ready(

    $("#but").click(
     function() { 
      $.ajax({ 
       url: "/Home/save", 
       dataType: "json", 
       type: 'POST', 
       data: "test", 
       success: function (result) { 
        $("#result").html(result.Result); 
       } 
      }); 

     } 
    ) 

    ); 

</script> 

답변

3

. 조치 인수는 inputdata입니다. 항상 URL 헬퍼를 사용

$.ajax({ 
    url: '/Home/save', 
    dataType: 'json', 
    type: 'POST', 
    data: { inputdata: 'test' }, 
    success: function (result) { 
     $('#result').html(result.Result); 
    } 
}); 

은 또한 당신의 자바 스크립트 URL을 하드 코딩하지 또는 배포 할 때 응용 프로그램은 단순히 때문에의 가능성에 작동이 중지됩니다 : 그래서 당신은 AJAX 요청의 data 해시에서이 같은 이름을 사용한다 가상 디렉터리 이름을 갖는

$.ajax({ 
    url: '@Url.Action("save", "home")', 
    dataType: 'json', 
    type: 'POST', 
    data: { inputdata: 'test' }, 
    success: function (result) { 
     $('#result').html(result.Result); 
    } 
}); 
당신은 당신의 코드가 또 다른 문제는이 액션 링크의 경우, 또는 버튼에게 AJAX 요청을 제출할 것을 의미 버튼의 기본 동작을 못할지도 모른다 취소하지된다는 것입니다

브라우저가 리디렉션되기 전에 실행할 시간이 있어야합니다.

또한 jQuery는 서버에서 보낸 Content-Type 응답 헤더에서이를 추론 할만큼 지능적이므로 JSON에 dataType을 지정할 필요가 없습니다.

<script type="text/javascript"> 
    $(function() { 
     $('#but').click(function() { 
      $.ajax({ 
       url: '@Url.Action("save", "home")', 
       type: 'POST', 
       data: { inputdata: 'test' }, 
       success: function (result) { 
        $('#result').html(result.Result); 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 
:

그래서 최종 버전의 라인을 따라 뭔가를 찾아야한다

관련 문제