Javascript jqueryajax没有';t工作(服务器端为ASP.net)
我的代码有问题。jQueryAjax不起作用。我的jquery脚本如下所示:Javascript jqueryajax没有';t工作(服务器端为ASP.net),javascript,jquery,asp.net,ajax,Javascript,Jquery,Asp.net,Ajax,我的代码有问题。jQueryAjax不起作用。我的jquery脚本如下所示: $('#AddPermission').click(function () { var _permissionId = $('#PermissionId').val(); var _roleId = $('#Role_Id').val(); if (_permissionId == '') { return false; } var _pa
$('#AddPermission').click(function () {
var _permissionId = $('#PermissionId').val();
var _roleId = $('#Role_Id').val();
if (_permissionId == '') {
return false;
}
var _parameters = { permissionId: _permissionId, id: _roleId };
console.log(_parameters);
$.ajax({
url: "/Admin/AddPermission2RoleReturnPartialView",
type: "GET",
data: _parameters,
success: function (data, textStatus, jqXHR) {
console.log(data);
$('#PermissionsTable').html(data);
$('#PermissionId').val("");
},
error: function (xhr, textStatus, errorThrown){
console.log(errorThrown);
}
});
});
我用ASP编写的服务器端脚本如下:
[HttpGet]
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
[ValidateAntiForgeryToken]
public PartialViewResult AddPermission2RoleReturnPartialView(int id, int permissionId)
{
Response.Write("Code1");
ROLE role = database.ROLES.Find(id);
PERMISSION _permission = database.PERMISSIONS.Find(permissionId);
if (!role.PERMISSIONS.Contains(_permission))
{
role.PERMISSIONS.Add(_permission);
database.SaveChanges();
}
return PartialView("_ListPermissions", role);
}
在控制台中运行时,我提供了以下数据:
对象{permissionId:“39”,id:“3”}
内部服务器错误
有人能帮我吗?删除方法上的ValidateAntiForgeryToken属性,因为您没有发布带有Token的表单,只是在进行ajax调用,并尝试使用jquery的param函数包装ajax调用的参数
$.ajax({
url: "@Url.Action("ActionName", "ControllerName")",
type: "GET",
data: $.param(_parameters),
success: function (data, textStatus, jqXHR) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log(errorThrown)
}
});
如果在html中有AntiForgeryToken,则必须在参数中发送它,例如,如果我在控制器中有一个方法,如
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAntiForgeryToken]
public ActionResult GetResult(int? id, int? someValue)
{
return PartialView("TestPartial");
}
在视图中,html看起来像
<div class="somediv">
@Html.AntiForgeryToken()
<button class="btn btn-primary" id="btnTest">Test Me</button>
</div>
<div id="someId"></div>
确保方法accept动词类型应该是POSTTnx,我删除了
ValidateAntiForgeryToken
,并且它工作正常。但为什么?!
$("#btnTest").click(function (e) {
e.preventDefault();
var p = { id: 123, someValue: 1234, __RequestVerificationToken:
$("input[name='__RequestVerificationToken']").val() };
$.ajax({
type: "POST",
url: "@Url.Action("GetResult", "ControllerName")",
data: $.param(p),
dataType: "application/json",
complete: function (data) {
$("#someId").empty().append(data.responseText);
}
});
});