如何使用来自不同页面的ajax调用相同的操作?
type: 'POST',
url: 'Notification/GetRecentNotifications/'
我目前正在使用上面的代码来调用我的操作。它适用于我的应用程序的主页,但是当我更改到其他页面时,这不起作用。任何人都可以给我一个解决方案吗?谢谢。
答案 0 :(得分:3)
继续我通常做的是指向哪个控制器&在ajax jquery调用中调用的动作......
$.ajax({
type: "POST",
url: '@(Url.Action("Action", "Controller"))',
success: function (data) {
}
});
使用Url.Action()
构建链接
答案 1 :(得分:0)
将代码放在脚本目录中的ajax.js
文件中,然后在需要使用该文件中的方法的页面中引用它。然后,在AjaxController
中为您的ajax调用放置任何服务器端逻辑,例如:
ajax.js
function foo() {
var model = { };
$.ajax({
url: '@Url.Action("Foo", "Ajax")',
type: "POST",
data: JSON.stringify(model),
success: function(data) {
alert(data);
},
error: function(data) {
alert(data);
}
});
}
AjaxController.cs
public class AjaxController : Controller
{
[HttpPost]
public JsonResult Foo(FooModel model)
{
string message = _ajaxService.Foo(model);
return Json(message);
}
}
在上面的示例中,_ajaxService
是一个服务层对象,其中包含处理ajax请求的逻辑。以下是您在视图中使用该功能的方法:
SomeView.cshtml
<script type="text/javascript" language="javascript" src="@Url.Content("~/Content/Scripts/ajax.js")"></script>
<script type="text/javascript" language="javascript">
$(document).ready(function () {
$('#button').click(foo);
});
</script>
如果有额外的逻辑将数据传递给重用的ajax方法,你应该把它放在局部视图中并从每个需要它的视图中引用它。