美文网首页jQueryJQuery
Rails项目中使用jQuery操作session

Rails项目中使用jQuery操作session

作者: TCJ | 来源:发表于2015-06-07 09:18 被阅读379次

    本周分享一个比较实用的jQuery小功能:实用jQuery直接操作session。

    Ruby可以直接操作session,但有些实用场景下,不适合用ruby来操作,比如在一个index页面(有分页),每一条记录前面都有一个复选框,我现在想跨页选择记录,然后批量提交,此时如果内在jQuery中直接操作session,那实现这个功能就比较轻松了:

    jQuery操作session的方法非常简单,常用的就是三种操作,下面还是用一个实例说明一下:

    需求:在一个固定资产的index页面中,库里有N多的固定资产数据,现在需要跨页勾选特定的固定资产,然后导出一份固定资产清单。

    先讲一下操作jQuery操作session的方法:

    1.新建和赋值: $.session.set('all_asset_item_ids', 'new_value') 创建一个名为'all_asset_item_ids'的session,并赋值为'new_value';

    2.清空原来的值:$.session.set('all_asset_item_ids', '') 其实跟上面那个完全一样。。。

    3.删除session: $.session.remove('all_asset_item_ids') 这个也不需要多解释了。。。

    总结一下:非常简单!

    下面再简单说明一下跨页选择的实现方法

    :javascript

        $(document).ready(function(){

        //清空所选,并且清除session

            $("#clear_all_checkbox").click(function(){

                $('input:checkbox').each(function () {

                    $(this).attr('checked',false);

                });

                $.session.remove('all_asset_item_ids');

                $.session.set('all_asset_item_ids', '');

            });

        //点击分页链接,获取id,保存到session中

        $(".dataTables_paginate").click(function(){

            var cross_page_asset_item_ids = new Array();

            $(":checkbox").each(function(){

                if ($(this).is(":checked")){

                    cross_page_asset_item_ids.push($(this).data("asset-item-id"));

                }

            });

            $.session.set('all_asset_item_ids', $.session.get('all_asset_item_ids') + ',' + cross_page_asset_item_ids);

        });

    });

    大致说明一下:当点击分页按钮时,创建一个新数组,然后对当前页所有的checkbox进行迭代,如果被勾选,则将该条资产记录的id写道数组中去,然后创建一个名为'all_asset_item_ids'的session,将数组的值以及自身之前已经有的值合并;

    清空所选按钮不但需要去除勾选,还需要清空session。当选完之后,执行导入action完成后,也需要清空session

    相关文章

      网友评论

      • waynedeng:你这个session和Rails里面的sesssion是相通的吗?我感觉像是cookies

      本文标题:Rails项目中使用jQuery操作session

      本文链接:https://www.haomeiwen.com/subject/qvcdqttx.html