【问题标题】:calling an AJAX method from an ASP.NET MVC 2 view从 ASP.NET MVC 2 视图调用 AJAX 方法
【发布时间】:2011-08-29 23:38:31
【问题描述】:

我想知道如何在 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>

【问题讨论】:

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


    【解决方案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>
    

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

    编辑:

    将您的操作更改为

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

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

    【讨论】:

    • 我在控制器方法上放了一个断点,它被调用了,只是没有结果。我将重载方法与 JsonRequestBehavior.AllowGet 一起使用,效果很好:) 感谢@LukLed 的帮助
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-22
      • 2021-12-14
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      相关资源
      最近更新 更多