Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryajax没有';t工作(服务器端为ASP.net)_Javascript_Jquery_Asp.net_Ajax - Fatal编程技术网

Javascript jqueryajax没有';t工作(服务器端为ASP.net)

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

我的代码有问题。jQueryAjax不起作用。我的jquery脚本如下所示:

$('#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动词类型应该是POST

Tnx,我删除了
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);
          }
       });
 });