bootstrap-table 不能显示数据问题

bootstrap-table 遇到的问题
后端接口返回的状态码是200 但是没有数据渲染。
前端控制台报错:
No ‘Access-Control-Allow-Origin’ header is present on the requested resource

其实就是ajax 跨域请求.
解决方法:
加一个过滤器。

public class CorsFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        HttpServletRequest request = (HttpServletRequest)servletRequest;

        String origin = request.getHeader("Origin");
        response.setHeader("Access-Control-Allow-Origin", origin);
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Authorization");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        String method = request.getMethod();
        if(method.equalsIgnoreCase("OPTIONS")){
            servletResponse.getOutputStream().write("Success".getBytes("utf-8"));
        }else{
            filterChain.doFilter(servletRequest, servletResponse);
        }
    }

    @Override
    public void destroy() {

    }

}
@Configuration
public class ConfigALl {
    @Bean
    public FilterRegistrationBean filterRegistrationBean(){
        FilterRegistrationBean filterRegistrationBean=new FilterRegistrationBean();
        filterRegistrationBean.setFilter(new CorsFilter());
        filterRegistrationBean.addUrlPatterns("/*");
        return filterRegistrationBean;
    }
}

前端的代码是这样的

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
		<script src="js/bootstrap-table.min.js"></script>
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<link rel="stylesheet" href="css/bootstrap.css" />
		<script src="js/bootstrap.js"></script>
		<script src="js/bootstrap-table-zh-CN.js"></script>
		<script src="https://cdn.bootcss.com/bootstrap-table/1.12.1/bootstrap-table-locale-all.js"></script>
		<link href="https://cdn.bootcss.com/bootstrap-table/1.12.1/bootstrap-table.css" rel="stylesheet">
		<script src="https://cdn.bootcss.com/bootstrap-table/1.12.1/bootstrap-table.js"></script>
	</head>
	<body>
		  <div class="container" style="margin-top:100px">
            <div class="row">
                <!-- 表格 -->
                <div class="col-xs-12">
                    <table class="table table-striped table-bordered table-hover" ></table>
                </div>
            </div>
        </div>
        <script type="text/javascript">
            class BstpTable{
                constructor(obj) {
                    this.obj=obj;
                }
                inint(){
                     //---先销毁表格 ---
   
                     //---初始化表格,动态从服务器加载数据--- 
                     this.obj.bootstrapTable({
                        //【发出请求的基础信息】
                        url: 'http://127.0.0.1:8088/data',
                        method: 'get',
                        contentType: "application/x-www-form-urlencoded",
						// height:tableHeight(),//高度调整
						// dateType: "jsonp",
						striped: true, //是否显示行间隔色
						dataField: "rows",//bootstrap table 可以前端分页也可以后端分页,这里
						//我们使用的是后端分页,后端分页时需返回含有total:总记录数,这个键值好像是固定的  
						//rows: 记录集合 键值可以修改  dataField 自己定义成自己想要的就好
						pageNumber: 1, //初始化加载第一页,默认第一页
						pagination:true,//是否分页
						queryParamsType:'limit',//查询参数组织方式
						// queryParams:queryParams,//请求服务器时所传的参数
						sidePagination:'server',//指定服务器端分页
						pageSize:10,//单页记录数
						pageList:[5,10,20,30],//分页步进值
						showRefresh:true,//刷新按钮
						showColumns:true,
						clickToSelect: true,//是否启用点击选中行
						toolbarAlign:'right',//工具栏对齐方式
						buttonsAlign:'right',//按钮对齐方式
						toolbar:'#toolbar',//指定工作栏
                        //按需求设置不同的样式:5个取值代表5中颜色['active', 'success', 'info', 'warning', 'danger'];
                       
                        
                        //【设置列】
                        columns: [
                         {field: 'id',title: 'id'}, 
                         {field: 'name',title: 'name'},
                         {field: 'age',title: 'age'},
                         {field: 'tool',title: 'name', align: 'center',
                            formatter:function(value,row,index){
                                var element = 
                                "<a class='edit' data-id='"+row.id +"'>编辑</a> "+ 
                                "<a class='delet' data-id='"+row.id +"'>删除</a> ";
                                return element;  
                            } 
                          }
                        ]
                    })
                 }
            }
            
            var bstpTable=new BstpTable($("table"));
            bstpTable.inint()
        </script>
    </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap Table 可以通过 AJAX 请求从后端获取数据并在表格中显示。下面是一些实现的步骤: 1. 在 HTML 页面中引入 Bootstrap Table 插件的 CSS 和 JS 文件。 ```html <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.3/bootstrap-table.min.css"> <script src="https://cdn.bootcdn.net/ajax/libs/bootstrap-table/1.18.3/bootstrap-table.min.js"></script> ``` 2. 创建一个 HTML 表格,并定义每一列的名称和字段名。 ```html <table id="table"> <thead> <tr> <th data-field="id">ID</th> <th data-field="name">Name</th> <th data-field="price">Price</th> </tr> </thead> </table> ``` 3. 初始化表格,并配置 AJAX 请求参数。 ```javascript $(function () { $('#table').bootstrapTable({ url: '/path/to/server', // 后端 API 地址 method: 'get', // 请求方法 dataType: 'json', // 返回数据类型 pagination: true, // 启用分页功能 sidePagination: 'server', // 分页位置,此处为服务器端分页 queryParams: function (params) { // 自定义查询参数 return { limit: params.limit, // 每页显示的记录数 offset: params.offset, // 当前页码 search: params.search // 搜索关键字 }; }, responseHandler: function (res) { // 自定义响应处理函数 return { total: res.total, // 总记录数 rows: res.data // 当前页记录列表 }; }, columns: [{ field: 'id', title: 'ID' }, { field: 'name', title: 'Name' }, { field: 'price', title: 'Price' }] }); }); ``` 4. 在后端编写 API 接口,接收请求参数并返回 JSON 格式的数据。 ```php // 获取请求参数 $limit = $_GET['limit']; $offset = $_GET['offset']; $search = $_GET['search']; // 查询数据库,获取数据列表和总记录数 // ... // 返回 JSON 格式的数据 echo json_encode([ 'total' => $total, 'data' => $data ]); ``` 这样就可以通过 AJAX 请求从后端获取数据并在表格中显示了。需要注意的是,后端 API 必须返回 JSON 格式的数据数据格式要与响应处理函数中返回的格式一致。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值