說出去都是淚啊~~~
找了大半天八拱,都是含糊其辭的答案,一點(diǎn)也找不到精準(zhǔn)一點(diǎn)的答案涯塔。肌稻。。
來匕荸,上代碼:
客戶端
main.js 配置
import VueResource from 'vue-resource'
...
Vue.use(VueResource)
//以下代碼必須寫在Vue.use(VueResource)后面
Vue.http.options.emulateHTTP = true;
Vue.http.options.emulateJSON = true;
Vue.http.headers.common['Content-Type'] = 'application/json'
Vue.http.headers.common['Access-Control-Allow-Origin'] = '*'
Vue.http.headers.common['Accept'] = 'application/json, text/plain, */*'
Vue.http.headers.common['Access-Control-Allow-Headers'] = 'Origin, Accept, Content-Type, Authorization, Access-Control-Allow-Origin'
Hello.vue
注意配置jsonpCallback很重要
...
<script>
export default{
...
methods:{
login(){
let data = {}
this.$http.jsonp(this.url,{
params:data,
jsonp: 'callBackParam',
jsonpCallback: "success_jsonpCallback"
}
).then((res)=>{
if(res.data){
console.log(res)
}
},(err)=>{
console.log(err)
});
}
}
}
</script>
...
服務(wù)器端
HelloAction.java
注意最后返回的數(shù)據(jù)格式是:"success_jsonpCallback(<json字符串>)"
...
public string hello(){
JSONObject result = new JSONObject();
result.put("status", "ok");
...
try {
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=utf-8");
Object o = "success_jsonpCallback("+result+")";
PrintWriter out=response.getWriter();
if(null!=o){
out.print(o.toString());
}
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
...
總結(jié):填坑之路悠長悠長的灯萍,需保重身體啊~,T_T 千萬別沖動(dòng)啊~~