美文网首页我爱编程
Spring mvc + BootStrapTable 跨域请求

Spring mvc + BootStrapTable 跨域请求

作者: ConnorG | 来源:发表于2018-03-21 15:19 被阅读0次

    前言

    在项目过程中,遇到了ajax跨域请求的问题。后台用的SSM,前端用的bootstrap table表格插件,特地记录一下项目中遇到的问题。

    ajax跨域请求

    前端代码:

    $.ajax({

        type : "get",//jsonp只能使用get,网上资料,暂未考证

        url : "prefix" + "getProducttype.do",//前缀配置在一个JS中,方便改动

        dataType: 'jsonp',//是jsonp非json

        contentType : 'application/json;charset=utf-8',

        success : function(data) {

    },

    error : function() {

    }

    });

    后端重要代码:

    这个接口返回的是一个树结构(这些东西不是重点),返回结果为com.fasterxml.jackson.databind.util.JSONPObject.JSONPObject

    要处理前端ajax自动传过来的callback函数,jquery中默认callback可以被success处理,所以前端ajax无需再定义jsonpcallback,也方便管理,这里的callback是jquery随机生成的,我们只需要拿到然后再返回过去就行了。

    上面就是简单的SSM+ajax跨域问题,接来下便是重点内容。

    bootstraptable ajax跨域问题

    一般情况下,我们写bootstrap table初始化的代码是这样的:

    colums、queryParams省略掉,如果想学习bootstrap table相关知识,可以先去百度搜其他的文章,这种重点讲的是bootstrap table的跨域问题。

    这是bootstrap table ajax跨域的写法,首先去到url、method和contentType,然后新增一个ajax属性

    ajax : function (request) {

        $.ajax({

            type : "get",

            url : "http://ip:8080/CERP/getProductList.do",

            dataType: 'jsonp',

            contentType : 'application/json',

            success : function (msg) {

                request.success({

                    row : msg

                });

                $('#productList').bootstrapTable('load', msg);

            },

            error:function(){

            }

        });

    },

    后台相关代码:

    和之前的写法并没有什么两样,知识需要把返回值类型改为JSONPObject就可以了。

    至此,bootstrap table ajax跨域问题就已经完美解决了。

    相关文章

      网友评论

        本文标题:Spring mvc + BootStrapTable 跨域请求

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