Jquery ASP.NET MVC 5使用AJAX删除数据库中的行
我正在尝试使用Ajax删除表中的行,以便在尝试删除表中的一行时页面不会刷新。 这是我的代码,但目前按Delete键没有任何作用: 控制器:Jquery ASP.NET MVC 5使用AJAX删除数据库中的行,jquery,asp.net,ajax,asp.net-mvc,Jquery,Asp.net,Ajax,Asp.net Mvc,我正在尝试使用Ajax删除表中的行,以便在尝试删除表中的一行时页面不会刷新。 这是我的代码,但目前按Delete键没有任何作用: 控制器: public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); }
public ActionResult Delete(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Main main = db.Mains.Find(id);
if (main == null)
{
return HttpNotFound();
}
return View(main);
}
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Main main = db.Mains.Find(id);
db.Mains.Remove(main);
db.SaveChanges();
return RedirectToAction("Index");
}
观点:
<script>
$(document).ready(function () {
$("#Delete").on("click", function () {
var parent = $(this).parent().parent();
$.ajax({
type: "post",
url: "@Url.Action("Delete","Main")",
ajaxasync: true,
success: function () {
alert("success");
},
error: function (data) {
alert(data.x);
}
});
});
});
</script>
$(文档).ready(函数(){
$(“#删除”)。在(“单击”上,函数(){
var parent=$(this.parent().parent();
$.ajax({
类型:“post”,
url:“@url.Action”(“删除”,“主”)”,
ajaxasync:true,
成功:函数(){
警惕(“成功”);
},
错误:函数(数据){
警报(data.x);
}
});
});
});
要从表中删除的实际链接:
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
<a href="" id="Delete">Delete</a>
</td>
@ActionLink(“编辑”,“编辑”,新的{id=item.id})|
请帮帮我!Ty如果您更改:
return View(main);
到
将使您在AJAX调用中获得成功
然后在浏览器中使用dubug JS检查
alert("success");
如果您更改以下内容,则称为成功:
return View(main);
到
将使您在AJAX调用中获得成功
然后在浏览器中使用dubug JS检查
alert("success");
在名为“成功”的情况下,您必须将您的
Id
传递给MVC操作。实际上,您并不是使用ajax
jQuery方法的data
选项将其作为参数传递。尝试调试MVC操作,查看Id
参数中接收到的内容
<script>
$(document).ready(function () {
$("#Delete").on("click", function () {
var parent = $(this).parent().parent();
var myId = //Get here you id
$.ajax({
type: "post",
url: "@Url.Action("Delete","Main")",
data: {id: myId },
ajaxasync: true,
success: function () {
alert("success");
},
error: function (data) {
alert(data.x);
}
});
});
});
$(文档).ready(函数(){
$(“#删除”)。在(“单击”上,函数(){
var parent=$(this.parent().parent();
var myId=//获取您的id
$.ajax({
类型:“post”,
url:“@url.Action”(“删除”,“主”)”,
数据:{id:myId},
ajaxasync:true,
成功:函数(){
警惕(“成功”);
},
错误:函数(数据){
警报(data.x);
}
});
});
});
您可能还需要传递
RequestVerificationToken
您必须将Id
传递给MVC操作。实际上,您并不是使用ajax
jQuery方法的data
选项将其作为参数传递。尝试调试MVC操作,查看Id
参数中接收到的内容
<script>
$(document).ready(function () {
$("#Delete").on("click", function () {
var parent = $(this).parent().parent();
var myId = //Get here you id
$.ajax({
type: "post",
url: "@Url.Action("Delete","Main")",
data: {id: myId },
ajaxasync: true,
success: function () {
alert("success");
},
error: function (data) {
alert(data.x);
}
});
});
});
$(文档).ready(函数(){
$(“#删除”)。在(“单击”上,函数(){
var parent=$(this.parent().parent();
var myId=//获取您的id
$.ajax({
类型:“post”,
url:“@url.Action”(“删除”,“主”)”,
数据:{id:myId},
ajaxasync:true,
成功:函数(){
警惕(“成功”);
},
错误:函数(数据){
警报(data.x);
}
});
});
});
您可能还需要传递
RequestVerificationToken
您在AJAX方法的帖子中没有包含Id
如果没有它,它将不会将Id发布到DeleteConfirmed
操作方法:
$(document).delegate('#Delete', 'click', function (e) {
e.preventDefault();
$.ajax({
type: "post",
url: "@Url.Action("Delete","Main")",
ajaxasync: true,
data: { id : $('input#idField').val() },
success: function () {
alert("success");
// Perform redirect
window.location.replace("@Url.Action('Index', 'Main')");
},
error: function (data) {
alert(data.x);
}
});
});
至于它在发布后不重定向,那是因为您使用AJAX请求发出请求。如果您从action方法返回一个重定向,您的页面将不会接受它,因为它是服务器端重定向
您必须检查成功消息,然后在成功时重定向。我建议如下:
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Main main = db.Mains.Find(id);
db.Mains.Remove(main);
db.SaveChanges();
return new HttpStatusCodeResult(System.Net.HttpStatusCode.OK);
}
要将此添加到您的成功
(如上所示):
您的页面正在重新加载页面,因为您的链接指示它:
<a href="" id="Delete">Delete</a> // Navigate to current page
在AJAX方法的帖子中没有包含
Id
如果没有它,它将不会将Id发布到DeleteConfirmed
操作方法:
$(document).delegate('#Delete', 'click', function (e) {
e.preventDefault();
$.ajax({
type: "post",
url: "@Url.Action("Delete","Main")",
ajaxasync: true,
data: { id : $('input#idField').val() },
success: function () {
alert("success");
// Perform redirect
window.location.replace("@Url.Action('Index', 'Main')");
},
error: function (data) {
alert(data.x);
}
});
});
至于它在发布后不重定向,那是因为您使用AJAX请求发出请求。如果您从action方法返回一个重定向,您的页面将不会接受它,因为它是服务器端重定向
您必须检查成功消息,然后在成功时重定向。我建议如下:
[HttpPost, ActionName("Delete")]
public ActionResult DeleteConfirmed(int id)
{
Main main = db.Mains.Find(id);
db.Mains.Remove(main);
db.SaveChanges();
return new HttpStatusCodeResult(System.Net.HttpStatusCode.OK);
}
要将此添加到您的成功
(如上所示):
您的页面正在重新加载页面,因为您的链接指示它:
<a href="" id="Delete">Delete</a> // Navigate to current page
删除什么都不做太模糊了。您在调试方面做了哪些尝试?你走了多远?您的onclick是否被触发,是否达到mvc操作。。。请至少添加您尝试过的基本调试信息。您能否澄清是删除不起作用(在数据库中该行未被删除)还是页面加载不起作用。。。或者两者都有?在数据库中存在id后,是否要回发
deleteComfixed
操作?Delete不做任何事情是非常模糊的。您在调试方面做了哪些尝试?你走了多远?您的onclick是否被触发,是否达到mvc操作。。。请至少添加您尝试过的基本调试信息。您能否澄清是删除不起作用(在数据库中该行未被删除)还是页面加载不起作用。。。或者两者都有?在数据库中存在id后,您希望在deleteConfixed
操作上回发吗?我想您的意思是更改返回重定向到操作(“索引”)代码>:)我想你的意思是更改返回重定向到操作(“索引”)代码>:)找不到StatusCodeResult。。。我应该让VS生成它吗?这是因为您已将返回值从ActionResult
更改为bool
?好的,让我检查一下。我刚刚打开VS来看看:PSorry,我记错了,它是HttpStatusCodeResult
。请查看更新:)让我们查看。它找不到StatusCodeResult。。。我应该让VS生成它吗?这是因为您已将返回值从ActionResult
更改为bool
?好的,让我检查一下。我刚刚打开VS来看看:PSorry,我记错了,它是HttpStatusCodeResult
。请看更新:)让我们看看。