向控制器发送Ajax调用
问题描述:
我正在使用MVC 2并试图对控制器方法进行ajax调用。向控制器发送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是不相关的我刚刚添加它,因为我不能添加两个方法具有相同的签名。
我想这可能不是正确的做法。请解释这种代码最适合的方法。
UPDATE:
添加与POST出来一个方法和GET不起作用。它只是打印不点火
public ActionResult FirstAjax()
{
return Json("chamara", JsonRequestBehavior.AllowGet);
}
答
的page.alert字符串“chamara”既然你不能有两个方法具有相同的名称和签名,你必须使用ActionName属性:
UPDATE:
[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链接进一步参考方法如何成为一个行动。虽然很好的参考。
答
从你的解释我认为你需要什么样的代码是这样的:
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>
请我更新的答案。 – RGR 2013-04-25 04:12:15