1

我正在使用 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>

在上面的代码中,请注意我的控制器。为了使代码正常工作,我必须使用HTTPPOSTHTTPGET添加到方法中,甚至参数 a 也不相关,我只是添加了它,因为我无法添加具有相同签名的两个方法。

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

更新:

添加一个没有 POST 和 GET 的方法不起作用。它只是在页面上打印字符串“chamara”。警报没有触发

 public ActionResult FirstAjax()
        {

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

        }
4

2 回答 2

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();
    }

请参阅链接以进一步了解方法如何成为操作。不过很好的参考。

于 2013-04-25T03:54:39.073 回答
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>
于 2013-04-25T03:56:48.653 回答