[英]asp.net mvc ajax post returns 404 not found
我正在尝试使用jquery ajax函数执行ajax请求。 我的行为很奇怪。 我的文件夹结构如下:
我的客户端ajax调用(在UserManagement / Index.cshtml中)如下所示:
var rolename = viewModel.roleName();
$.ajax({
type: "POST",
url: '@Url.Action("AddRole", "UserManagement")',
contentType: "application/json; charset=utf-8",
data: { rolename: rolename },
success: function(data) {
var role = new Role(rolename);
model.addRole(role);
model.appendItem("#accordion", role.getItem());
viewModel.roleName("");
}
});
在我的UserManagementController.cs中,我执行以下操作:
// GET: /UserManagement/
public ActionResult Index()
{
var serializer = new JavaScriptSerializer();
var context = new ApplicationDbContext();
var users = context.Users.ToList();
var roles = context.Roles.ToList();
ViewBag.Users = users;
ViewBag.Roles = roles;
return View();
}
//
// POST: /UserManagement/AddRole
[HttpPost]
public string AddRole(string rolename)
{
Response.StatusCode = 200;
return "gsfgdg";
}
我已经尝试使用GET而不是POST或将AddRole更改为void类型以及其他任何内容,但是我无法使其正常工作。 我总是收到“找不到404”。 有人可以帮忙吗?
提前致谢!
如果删除Content-Type,您的案例将起作用。
Case 1: If we use Content-Type: "application/json"
当您请求Content / Type的application / json时,在服务器端ScriptServices期望数据为JSON序列化字符串。
但是,我们可以看到"Invalid JSON primitive ***"
通常是响应的结果。
在这里,我们应该理解将jQuery的“数据”选项传递为“ {'param':'value'}”,而不是{'param':'value'}。
因此,就您而言,要实现解决方案:我们需要提供以下data
var rolename = viewModel.roleName();
$.ajax({
type: "POST",
url: '@Url.Action("AddRole", "UserManagement")',
contentType: "application/json; charset=utf-8",
data: "{ 'rolename':'" + rolename +"' }",
success: function(data) {
var role = new Role(rolename);
model.addRole(role);
model.appendItem("#accordion", role.getItem());
viewModel.roleName("");
}
});
Case 2: If we skip Content-Type: "application/json"
我们应该提供jQuery的“数据”选项作为JSON对象{'param':'value'}或{param:'value'}。 (与您一样)
希望能帮助到你 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.