我正在使用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);
}
答案 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>