2011-02-12 2 views
0

MVC2에서 Ajax를 사용하는 방법을 알고 싶습니다. Visual Studio에서 빈 프로젝트를 만들고 다음 코드를 사용하여 Controllers/Home/HomeController.cs 아래에 홈 컨트롤러를 추가했습니다.ASP.NET MVC 2보기에서 AJAX 메서드 호출

단추를 클릭 할 때 AJAX를 사용하여 HomeController에서 AjaxTest 메서드를 호출하는 방법 대신 텍스트?

public class HomeController : Controller 
{  
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult AjaxTest() 
    { 
     return Json("Whoever answers this rocks!"); 
    } 
} 

내가보기/홈에서 뷰를 추가/다음 코드로 Index.cs는

<script type="text/javascript"> 
     function sayHello() { 
      alert("hello stackoverflow :)") 
     } 
    </script> 

    <div> 
     Hello 
     <button onclick="sayHello();"> Click Me! </button> 
    </div> 

답변

1

이 작동합니다 :

<script type="text/javascript"> 
    function sayHello() { 
     $.get('/Home/AjaxTest', function(data) { alert(data) }); 
    } 
</script> 

것은 머리 부분에 jQuery를 포함하는 것을 잊지 마십시오 당신의 페이지 :

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> 

프로젝트의 스크립트 폴더에 jQuery를 포함하십시오. jQuery는 ASP.NET MVC 프레임 워크 파일의 일부입니다.

편집 :

변경 액션이 때 중요한 정보가 타사 웹 사이트에 공개 될 수 있기 때문에

이 요청이 차단되었습니다 "에서 가져 오기 결과를 JSON을 사용하여 기본적으로
public ActionResult AjaxTest() 
{ 
    return Json("Whoever answers this rocks!", JsonRequestBehavior.AllowGet); 
} 

에 GET 요청을 허용하려면 JsonRequestBehavior를 AllowGet으로 설정하십시오. " 오류.

+0

아니요, 작동하지 않습니다. 내가 뭔가를 놓치고 있어야합니다 ... – Gaz

+0

@ Gaz : 업데이트 된 대답을보세요. – LukLed

+0

컨트롤러 메서드에 중단 점을 넣었습니다. 호출되고 있었는데 결과가 없습니다. JsonRequestBehavior.AllowGet과 함께 오버로드 된 메서드를 사용하여 잘 작동했습니다. 도움을 주셔서 감사합니다. @LukLed – Gaz

0

<button> 요소가 기본적으로 양식을 제출하므로 AJAX 호출에 의도하지 않은 영향을 줄 수 있음을 잊지 마십시오. 을 고려하거나 sayHello() 함수에 false을 반환하십시오.