从ASP.NET MVC 2视图调用AJAX方法

时间:2011-02-12 21:53:17

标签: asp.net-mvc ajax asp.net-mvc-2

我想知道如何在MVC2中使用Ajax。我在Visual Studio中创建了一个空项目,并在Controllers / Home / HomeController.cs下添加了一个带有以下代码的家庭控制器

当单击按钮并显示该文本时,如何使用AJAX在HomeController上调用AjaxTest方法?

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

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

我在Views / Home / Index.cs下添加了一个视图,其中包含以下代码

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

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

2 个答案:

答案 0 :(得分:1)

这应该有效:

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

请记住在页面的head部分包含jQuery:

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

您还可以在项目的scripts文件夹中包含jQuery。 jQuery是ASP.NET MVC框架文件的一部分。

编辑:

将您的操作更改为

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

默认情况下,使用Json和get结果“此请求已被阻止,因为在GET请求中使用此信息时,可能会向第三方网站披露敏感信息。要允许GET请求,请将JsonRequestBehavior设置为AllowGet。”错误。

答案 1 :(得分:0)

不要忘记<button>元素默认提交表单,这可能会对您的AJAX调用造成意外影响。在<input type="button" value="Click Me" />函数中考虑false或返回sayHello()