对控制器进行Ajax调用

时间:2013-04-25 02:07:32

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

我正在使用MVC 2并尝试对控制器方法进行ajax调用。

控制器:

        [HttpGet]
        public ActionResult FirstAjax()
        {
            return View();
        }

        [HttpPost]
        public ActionResult FirstAjax(string a)
        {

            return Json("chamara", JsonRequestBehavior.AllowGet);

        }

查看:

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {

            var serviceURL = '<%= Url.Action("FirstAjax", "AjaxTest") %>';

            $.ajax({
                type: "POST",
                url: serviceURL,
                data: param = "",
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                success: successFunc,
                error: errorFunc
            });

            function successFunc(data, status) {

                alert(data);


            }

            function errorFunc() {
                alert('error');
            }
        });
    </script>
</head>

在上面的代码中请注意我的控制器。要使代码正常工作,我必须添加到 HTTPPOST HTTPGET 的方法,甚至参数a都没有关联我只是添加它因为我无法添加两个方法相同的签名。

我想这可能不是正确的方法。请解释这种代码最合适的方法。

更新

使用POST和GET添加单个方法不起作用。它只是在page.alert上打印字符串“chamara”而不是

 public ActionResult FirstAjax()
        {

            return Json("chamara", JsonRequestBehavior.AllowGet);

        }

2 个答案:

答案 0 :(得分:0)

由于您不能使用具有相同名称和签名的两个方法,因此必须使用ActionName属性:

<强>更新

[HttpGet]
    public ActionResult FirstAjax()
    {
        Some Code--Some Code---Some Code
        return View();
    }

    [HttpPost]
    [ActionName("FirstAjax")]
    public ActionResult FirstAjaxPost()
    {
        Some Code--Some Code---Some Code
        return View();
    }

请参阅this链接,以获取有关方法如何成为行动的进一步参考。非常好的参考。

答案 1 :(得分:0)

根据您的解释,我认为您需要的代码就像:

AjaxTestController.cs

[HttpGet]          
public ActionResult FirstAjax()
{
     return Json("chamara", JsonRequestBehavior.AllowGet);
}    

脚本:

<script type="text/javascript">
      $(document).ready(function () {

      var serviceURL = '<%= Url.Action("FirstAjax", "AjaxTest") %>';

      $.ajax({
           type: "GET",
           url: serviceURL,               
           success: successFunc,
           error: errorFunc
      });

      function successFunc(data) {           
           alert(data);
      }

      function errorFunc(xhr, status, err) {            
           alert('error');
      }

      });
</script>