最近在自學vue,開始以爲跟angular大同小異,但是真正使用的時候發現還是很多不一樣的地方,可能是因爲剛剛開始理解的還不夠深入O(∩_∩)O。 下面說說前端jsp怎麼和後臺交互,後臺使用的是springMvc框架。
html部分
<div id="app">
<table class="table table-bordered table-striped" style="font-size:12px;">
<tr>
<th style="text-align:center;">xxx</th>
<th style="text-align:center;">xxx</th>
<th style="text-align:center;">xx</th>
</tr>
<tr v-for="e in exceptionList" style="cursor:pointer;">
</tr>
</table>
</div>
js部分,此處需要引入vue-resource庫才能使用$http請求,可以用: https://cdn.jsdelivr.net/vue.resource/1.0.3/vue-resource.min.js
$(function(){
var params = {};
var vm = new Vue( {
el: '#app',
data: {
currentPage :"1",
exceptionList : [],
totalItems: ''
},
created: function () { // created爲創建Vue實例後立馬執行
// `this` 指向 vm 實例
// var pageIndex = 1;
// params.length = 10;
// params.start = (pageIndex -1) * 10;
// POST請求
this.$http.post(
BasePath + "/PriceException/search.do",
// 請求體重發送的數據
{length: '10', start : 2},{emulateJSON:true}).then(function (resp) {
// 請求成功回調
debugger;
this.totalItems = resp.data.data.count;
// this.$set('exceptionList', resp.data.data.posts);
this.exceptionList = resp.data.data.posts;
// this.totalItems = resp.data.count;
}, function () {
// 請求失敗回調
});
}
} );
vm.$watch("currentPage",function(val,oldval){
alert(val);
})//主動調用$watch方法來進行數據監測</span>
})
java後臺部分
@RequestMapping(value = "/search", method= RequestMethod.POST )
@ResponseBody
public Object searchResult(PagenationVo pVo) {
參數pVo對象裏面一定要包含js傳遞過來的屬性。
到這裏,這樣就能實現vue和後臺交互了。
PS:在使用過程中,開始怎麼都不能把參數傳到後臺,springMvc的Controller怎麼都拿不到值, 一直報錯400、415錯誤,應該是參數解析問題,實驗了很久,按上面那種方式終於成功了,汗!
還有因爲我是分頁功能,需要傳入length參數,開始寫成:{length: 10, start : 2}也是傳不過去這兩個參數,搞了很久,後來才知道是因爲length:10,這裏把它當做10個參數傳入了
改成:{length: ‘10’, start : 2}就好, 目前還沒搞明白爲什麼會這樣,難道是因爲vue-resource衝突??