[英]The jquery ajax doesn't work (the server side is ASP.net)
我的代碼有問題。 jQuery ajax無法正常工作。 我的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>
最后的jQuery代碼將是
$("#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);
}
});
});
確保方法接受動詞類型應為POST
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.