我使用以下函数删除表中的行
//delete individual row
jQuery('.stdtable img.delete').click(function(){
var c = confirm('Continue delete?');
if(c) jQuery(this).parents('tr').fadeOut(function(){
jQuery(this).remove();
});
return false;
});
此代码位于单独的js文件中,并且对所有页面都是通用的。 现在我想添加一个Ajax操作,删除数据库中的行。但是根据我所在的页面,它必须调用不同的控制器。
实施例: 产品页面必须在ProductController中调用delete ProductGroup页面必须在ProductGroupController中调用delete
如何处理?
答案 0 :(得分:5)
如果您需要某种方法来定义要调用的控制器,可以在表上放置data
属性。像这样:
<table class="stdtable" data-remove-url="@Url.Action("DeleteRow", "MyController")">
<tr data-id="1">
AAA
<img class="delete" src="foo.jpg" />
</tr>
<tr data-id="2">
BBB
<img class="delete" src="foo.jpg" />
</tr>
</table>
然后在您的jQuery中,您可以将此值作为请求的url
参数以及要删除的id
。
jQuery('.stdtable img.delete').click(function(e) {
e.preventDefault();
if (confirm('Continue delete?')) {
var $el = $(this);
var $tr = $el.closest('tr');
var url = $el.closest('table').data('remove-url');
var id = $tr.data('id');
$tr.fadeOut(function() {
$el.remove();
$.post(url, { rowId = id }); // do the delete on the server
});
}
});
答案 1 :(得分:1)
您可以向表或行添加自定义属性,其中包含您需要调用的控制器的URL。在您的方法中,您可以阅读此自定义属性以获取控制器的网址。在此处查看JQuery attr methode。
答案 2 :(得分:0)
如果我理解你的问题,你想点击带删除类的图像来调用删除数据库中的那一行。最简单的解决方案是
<img data-rowid="1" src="something.jpg"/>
jQuery('.stdtable img.delete').click(function(e){
e.preventDefault();
var c = confirm('Continue delete?');
var that = this;
if(c) {
var id = this.data("rowid");
jQuery.ajax({ url : "/resource/"+id, method : "DELETE"
statusCode: {
200: function() {
jQuery(that).parents('tr').fadeOut(function(){
jQuery(that).remove();
});
}
}});
}
return false;
});