这里是我的 “ManageUserRoles.cshtml” 我的Ajax代码:Ajax调用JsonResult在控制器出现故障404错误, “资源未找到”
//HIT THE DATABASE FOR USERNAME GIVING IT THIS USERNAME
function isUserValid(thisUser) {
$.ajax({
url: "/Roles/isUserValid/" + thisUser,
type: 'POST',
success: handleResultResponseUserName,
error: function (xhr) { alert("Error..."); }
});
}
//handles data back from ajax call
//RESET INPUT IF NO USER IF FOUND IN USER'S TABLE
function handleResultResponseUserName(ResponseObject) {
if (ResponseObject == "no user with this number") {
$('#frmGetRoles').find('input[name="UserName"]').val(null);
}
else {
//DO NOTHING
}
}
这是我在我的RolesController JsonResult:
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult isUserValid(string username)
{
var name = string.Empty;
var CheckUserExists = (from c in _db.AspNetUsers
where (c.UserName.Equals(username))
select c);
var results = new JsonResult();
if (CheckUserExists.Any())
{
name = CheckUserExists.First().UserName;
}
else
{
name = "no user with this name in database";
}
return Json(name, JsonRequestBehavior.DenyGet);
}
我已经在不同的应用程序中使用了几乎完全相同的代码,并且我剪切并粘贴到了一个新的代码中,我尝试将其用于角色管理。
json引用在那里,并在web.config中。但是当我在JsonResult中放置一个断点时,它永远不会停止,并且从客户端javascript(404资源未找到)返回错误。在这个新应用程序中没有其他json的东西被使用。 。 。然而。
我打F5和它返回: http://localhost/StoreMasterSecure/Roles/ManageUserRoles 这是具有运行ajax的按钮的视图。这一切都得到ajax调用,然后什么也没有发生,Chrome开发者工具控制台显示404错误。
即使我在URL中键入路径,我得到的资源找不到404页: http://localhost/StoreMaster/Roles/isValidUser/[email protected]
(isValidUser是JsonResult控制器,在ManageUserRoles的ActionResult存在相同的控制器和作品)
你的方法装饰有'[ValidateAntiForgeryToken]',但你永远不会传递该标记(要么传递它,要么删除该属性),但为什么不使用'[Remote]'属性?和输入网址不会工作,因为你的方法是一个POST,而不是一个GET。 –
Stephen,我把[ValidateAntiForgeryToken]放在那里,因为我看到它高于所有其他ActionResults。它不适用于它或没有它。我把它拿走了,试图把[Remote]加下划线并加上红色,解释如下:“由于其保护级别,RemoteAttribute()无法访问。”然而,我并不需要这个在我的工作应用程序,它也使用POST方法和工作。表单字段数据到达.ajax调用。但是我找不到404资源。 – JustJohn
(1)您不理解“RemoteAttribute”是什么 - 将其应用于您的财产。请参阅[如何:在ASP.NET MVC中实现远程验证](https://msdn.microsoft.com/zh-cn/library/gg508808(VS.98).aspx)。 (2)如果你没有传递令牌,你必须移除'[ValidateAntiForgeryToken]'。 (3)你的ajax选项需要是'url:'@ Url.Action(“isUserValid”,“Roles”)'和'data:{username:thisUser},' –