为什么此 MVC 操作 return 在 IE11 中出现 404 响应
Why does this MVC action return a 404 response in IE11
我编写了一个在 Chrome 和 Firefox 中有效但在 IE11 中无效的 mvc 操作。使用 IE11 它 returns 404 响应代码。
控制器:
[HttpDelete]
public ActionResult DeleteAction(int ActionID)
{
return Json(_Logic.DeleteAction(ActionID), JsonRequestBehavior.DenyGet);
}
调用 JS:
Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
return $.ajax({
type: "DELETE",
datatype: 'json',
url: "/root/someurl/DeleteAction?ActionId=" + _actionID,
contentType: 'application/json; charset=utf-8',
success: function (data) { successCallback(_actionID, data); },
error: function (data) { failureCallback(data); },
});
};
我访问的 Url 是正确的,因为它在其他浏览器中有效。有人以前看过这个吗?
试试这个。
Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
return $.ajax({
type: "DELETE",
datatype: 'json',
url: '@Url.Content("~/root/someurl/DeleteAction/")' + _actionID,
contentType: 'application/json; charset=utf-8',
success: function (data) { successCallback(_actionID, data); },
error: function (data) { failureCallback(data); },
});
};
因为你说它在 Chrome 和 Firefox 中有效,我假设你在 IIS 上启用了 PUT/Delete
方法?
如果是,我认为这可能是某些 IE 浏览器不支持 Ajax 调用中的 type: "DELETE"
的问题。也许您正在使用 IE8 或类似的兼容模式?
这个问题已经在 SO here 上提到了:Problem with jQuery.ajax with 'delete' method in ie 也许你只是发现 IE11 也不支持 DELETE
。
又一个不错的讨论Are the PUT, DELETE, HEAD, etc methods available in most web browsers?
我编写了一个在 Chrome 和 Firefox 中有效但在 IE11 中无效的 mvc 操作。使用 IE11 它 returns 404 响应代码。
控制器:
[HttpDelete]
public ActionResult DeleteAction(int ActionID)
{
return Json(_Logic.DeleteAction(ActionID), JsonRequestBehavior.DenyGet);
}
调用 JS:
Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
return $.ajax({
type: "DELETE",
datatype: 'json',
url: "/root/someurl/DeleteAction?ActionId=" + _actionID,
contentType: 'application/json; charset=utf-8',
success: function (data) { successCallback(_actionID, data); },
error: function (data) { failureCallback(data); },
});
};
我访问的 Url 是正确的,因为它在其他浏览器中有效。有人以前看过这个吗?
试试这个。
Ajax_Proxy.DeleteAction = function (_actionID, successCallback, failureCallback) {
return $.ajax({
type: "DELETE",
datatype: 'json',
url: '@Url.Content("~/root/someurl/DeleteAction/")' + _actionID,
contentType: 'application/json; charset=utf-8',
success: function (data) { successCallback(_actionID, data); },
error: function (data) { failureCallback(data); },
});
};
因为你说它在 Chrome 和 Firefox 中有效,我假设你在 IIS 上启用了 PUT/Delete
方法?
如果是,我认为这可能是某些 IE 浏览器不支持 Ajax 调用中的 type: "DELETE"
的问题。也许您正在使用 IE8 或类似的兼容模式?
这个问题已经在 SO here 上提到了:Problem with jQuery.ajax with 'delete' method in ie 也许你只是发现 IE11 也不支持 DELETE
。
又一个不错的讨论Are the PUT, DELETE, HEAD, etc methods available in most web browsers?