前言
在項(xiàng)目過程中票从,遇到了ajax跨域請(qǐng)求的問題余佛。后臺(tái)用的SSM晰房,前端用的bootstrap table表格插件求摇,特地記錄一下項(xiàng)目中遇到的問題。
ajax跨域請(qǐng)求
前端代碼:
$.ajax({
????type : "get",//jsonp只能使用get殊者,網(wǎng)上資料与境,暫未考證
????url : "prefix" + "getProducttype.do",//前綴配置在一個(gè)JS中,方便改動(dòng)
????dataType: 'jsonp',//是jsonp非json
????contentType : 'application/json;charset=utf-8',
????success : function(data) {
},
error : function() {
}
});
后端重要代碼:
這個(gè)接口返回的是一個(gè)樹結(jié)構(gòu)(這些東西不是重點(diǎn))猖吴,返回結(jié)果為com.fasterxml.jackson.databind.util.JSONPObject.JSONPObject
要處理前端ajax自動(dòng)傳過來的callback函數(shù)嚷辅,jquery中默認(rèn)callback可以被success處理,所以前端ajax無需再定義jsonpcallback距误,也方便管理簸搞,這里的callback是jquery隨機(jī)生成的,我們只需要拿到然后再返回過去就行了准潭。
上面就是簡(jiǎn)單的SSM+ajax跨域問題趁俊,接來下便是重點(diǎn)內(nèi)容。
bootstraptable ajax跨域問題
一般情況下刑然,我們寫bootstrap table初始化的代碼是這樣的:
colums寺擂、queryParams省略掉,如果想學(xué)習(xí)bootstrap table相關(guān)知識(shí)泼掠,可以先去百度搜其他的文章怔软,這種重點(diǎn)講的是bootstrap table的跨域問題。
這是bootstrap table ajax跨域的寫法择镇,首先去到url挡逼、method和contentType,然后新增一個(gè)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(){
????????}
????});
},
后臺(tái)相關(guān)代碼:
和之前的寫法并沒有什么兩樣腻豌,知識(shí)需要把返回值類型改為JSONPObject就可以了家坎。
至此,bootstrap table ajax跨域問題就已經(jīng)完美解決了吝梅。
# 2021-03-12 更新
如果你不幸的看到了這個(gè)文章虱疏,請(qǐng)放棄JSONP的方式,以及BootStrapTable苏携,選擇更新的框架做瞪,如果是舊項(xiàng)目或者非寫不可,那就隨意吧右冻。