选中CheckBox实现批量操作,用jquery或AJAX如何提交选中的数据?

秋的红果实 2016-01-08 09:36:21
功能简述:服务端(controler)生成的数据,逐行发送到页面,行左端是客户端Checkbox(不是server的,并且是动态生成的,其id就是该行在数据库的主键)。
现要对选中的行,执行批量操作,如删除,用jquery或AJAX,如何将选中的Checkbox的id(行的主键),提交给服务端(actionResult方法)?服务端怎么接收?

说明:
1、是MVC项目
2、不用gridview控件,也不用_doPostBack回发机制,这个已经实现,因别的原因不行才要改jquery或ajax……,时间紧急,不讨论这些
...全文
1473 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2016-01-12
  • 打赏
  • 举报
回复
你的ajax肯定是成功了。不然不会执行后台的action方法。 如果只是要alert出来 Ok的话,你修改一下 dataType: "text",应该就可以了。 这个只是返回的数据格式问题而已。 或者后台actionresult修改成JsonResult返回Json()格式
秋的红果实 2016-01-09
  • 打赏
  • 举报
回复
引用 9 楼 hanjun0612 的回复:
你根据这个改一下,应该就可以了。 checkbox的value模拟是存储了数据库主键id值

<body>
    <input type="checkbox" value="1" name="cbo" />
    <input type="checkbox" value="2" name="cbo" />
    <input type="checkbox" value="3" name="cbo" />

    <input type="button" id="sub" value="submit" />
</body>
<script>
    $('#sub').click(function () {

        var cbos = $("input[name='cbo']").is(":checked");
        var _list = {};

        $("input[name='cbo']:checked").each(
            function (i) {
                _list["selectedIDs[" + i + "]"] = $(this).val();
            });

        $.ajax({
            url: 'Test',
            //data: { "selectedIDs": _list },  
            data: _list,
            dataType: "json",
            type: "POST",
            //traditional: true,  
            success: function (responseJSON) {
                // your logic  
                alert('Ok');
            }
        });
    })
</script>
public ActionResult Test(List<int> selectedIDs)
        {
            string result = "ok";
            string errMsg = "";

            return Content(result);
        }  
post后,返回的只是OK,没有启动success: function (responseJSON) { alert('Ok'); } 按照以前的方法,post后,返回的结果是整个视图只有一个OK,没有启动success: function (responseJSON) { // your logic alert('Ok'); },没办法探测ajax提交是否成功? action方法返回改为return view();,发现success能正确返回结果,post是成功的,不过,是一个页面的HTML代码 我现在已经改用Ajax.BeginForm了,但也不理想。你再说说你的方法,如何探测ajax是否提交成功
秋的红果实 2016-01-09
  • 打赏
  • 举报
回复
引用 4 楼 starfd 的回复:
你好歹列下你目前生成的html代码吧,不然怎么知道你的文件结构呢? 否则你随便找个有批量删除的参考下就行了,要么就是在生成html时就将数据绑定到dom上,比如
$('').data("mydata",something)
要么就是通过添加额外的html属性的方式,比如下面这种
<tr data-id="1">
然后可以通过遍历层级的方式找到所有勾选的checkbox
大致这个样子: <input type="checkbox" id="L2" />具体文本内容……<br /> <input type="checkbox" id="L1111" />具体文本内容……<br /> <input type="checkbox" id="L20" />具体文本内容……<br /> <input type="checkbox" id="L12" />具体文本内容……<br /> <input type="checkbox" id="L87" />具体文本内容……<br /> …… 请问如何添加额外的html属性?强行加上会提示不是***默认属性,也访问不到。
  • 打赏
  • 举报
回复
关于如何写“循环、提交数据”的 javascript 代码,建议你开始自学 javascript。
  • 打赏
  • 举报
回复
我只告诉你一点,“不要随便使用 id 属性”。一个页面当它分成多“片”开发和修改的时候,在 html 中仍然要保持id唯一。因此你的业务数据要绑定到 html element 上,应该自己随便使用你的 checkbox 的任意自定义属性(例如 data-id)来附加数据,但是不要去动人家的 id 属性(宁可没有 id 属性,也不能随便把你的业务数据作为 id)。否则就会让 javascript 代码很快因为 id 冲突而乱掉。
  • 打赏
  • 举报
回复
你好歹列下你目前生成的html代码吧,不然怎么知道你的文件结构呢? 否则你随便找个有批量删除的参考下就行了,要么就是在生成html时就将数据绑定到dom上,比如
$('').data("mydata",something)
要么就是通过添加额外的html属性的方式,比如下面这种
<tr data-id="1">
然后可以通过遍历层级的方式找到所有勾选的checkbox
正怒月神 版主 2016-01-08
  • 打赏
  • 举报
回复
主要就是说一下怎么传checkbox的值给controller。 至于怎么找到选中的 checkbox,你通过jquery很容易办到。 我这里就不赘述了。
正怒月神 版主 2016-01-08
  • 打赏
  • 举报
回复
我这里写了下比较简单的,只是传了id
public ActionResult Test(List<int> selectedIDs)
        {
            string result = "ok";
            string errMsg = "";

            return Content(result);
        }
<script>
    // 方式一  
    var _list = {};

    for (var i = 0; i < 3; i++) {
        _list["selectedIDs[" + i + "]"] = i;
    }

    $.ajax({
        url: 'Test',
	        //data: { "selectedIDs": _list },  
	        data: _list,
	        dataType: "json",
	        type: "POST",
	        //traditional: true,  
	        success: function (responseJSON) {
	            // your logic  
	            alert('Ok');
	        }
	    });
</script>
正怒月神 版主 2016-01-08
  • 打赏
  • 举报
回复
http://blog.csdn.net/hanjun0612/article/details/50441437
正怒月神 版主 2016-01-08
  • 打赏
  • 举报
回复
忘记删掉var cbos = $("input[name='cbo']").is(":checked");这句话了。 这句话不要
正怒月神 版主 2016-01-08
  • 打赏
  • 举报
回复
你根据这个改一下,应该就可以了。 checkbox的value模拟是存储了数据库主键id值

<body>
    <input type="checkbox" value="1" name="cbo" />
    <input type="checkbox" value="2" name="cbo" />
    <input type="checkbox" value="3" name="cbo" />

    <input type="button" id="sub" value="submit" />
</body>
<script>
    $('#sub').click(function () {

        var cbos = $("input[name='cbo']").is(":checked");
        var _list = {};

        $("input[name='cbo']:checked").each(
            function (i) {
                _list["selectedIDs[" + i + "]"] = $(this).val();
            });

        $.ajax({
            url: 'Test',
            //data: { "selectedIDs": _list },  
            data: _list,
            dataType: "json",
            type: "POST",
            //traditional: true,  
            success: function (responseJSON) {
                // your logic  
                alert('Ok');
            }
        });
    })
</script>
public ActionResult Test(List<int> selectedIDs)
        {
            string result = "ok";
            string errMsg = "";

            return Content(result);
        }  
秋的红果实 2016-01-08
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
我只告诉你一点,“不要随便使用 id 属性”。一个页面当它分成多“片”开发和修改的时候,在 html 中仍然要保持id唯一。因此你的业务数据要绑定到 html element 上,应该自己随便使用你的 checkbox 的任意自定义属性(例如 data-id)来附加数据,但是不要去动人家的 id 属性(宁可没有 id 属性,也不能随便把你的业务数据作为 id)。否则就会让 javascript 代码很快因为 id 冲突而乱掉。
id是主键值,到不会混乱。不过占用id的确不好,请问怎么给checkbox添加自定义属性,请直接告诉我,时间实在紧急
秋的红果实 2016-01-08
  • 打赏
  • 举报
回复
引用 2 楼 hanjun0612 的回复:
我这里写了下比较简单的,只是传了id
public ActionResult Test(List<int> selectedIDs)
        {
            string result = "ok";
            string errMsg = "";

            return Content(result);
        }
<script>
    // 方式一  
    var _list = {};

    for (var i = 0; i < 3; i++) {
        _list["selectedIDs[" + i + "]"] = i;
    }

    $.ajax({
        url: 'Test',
	        //data: { "selectedIDs": _list },  
	        data: _list,
	        dataType: "json",
	        type: "POST",
	        //traditional: true,  
	        success: function (responseJSON) {
	            // your logic  
	            alert('Ok');
	        }
	    });
</script>
这是咱们以前的方式,我的是MVC项目,这种也行吗?我晚上回去试一试。我本意是下面这个样子的: @using (Html.BeginForm()) { <div class="editor-label"> @Html.LabelFor(model => model.UserName) </div> <div class="editor-field"> @Html.EditorFor(model => model.UserName) @Html.ValidationMessageFor(model => model.UserName) </div> <p> <input type="submit" value="Save" /> </p> } 这里是固定个数的提交框,我要的是只提交选中的内容,动态的,这里怎么写

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧