原文链接:http://blog.csdn.net/vergilgeekopen/article/details/68954940

需要引用vue-resource

安装请参考https://github.com/pagekit/vue-resource官方文档

在入口函数中加入

  1. import VueResource from 'vue-resource'
  2. Vue.use(VueResource);

在package.json文件中加入

  1. "dependencies": {
  2. "vue": "^2.2.6",
  3. "vue-resource":"^1.2.1"
  4. },

请求如下

  1. mounted: function () {
  2. // GET /someUrl
  3. this.$http.get('http://localhost:8088/test').then(response => {
  4. console.log(response.data);
  5. // get body data
  6. // this.someData = response.body;
  7.  
  8. }, response => {
  9. console.log("error");
  10. });
  11. },

注意

1.在请求接口数据时,涉及到跨域请求 
出现下面错误: 
XMLHttpRequest cannot load http://localhost:8088/test. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:8080’ is therefore not allowed access.

解决办法:在接口中设置

  1. response.setHeader("Access-Control-Allow-Origin", "*");

2.使用jsonp请求

但是出现如下错误 
Uncaught SyntaxError: Unexpected token 
查看请求,数据已返回,未解决.

提交表单

  1. <div id="app-7">
  2. <form @submit.prevent="submit">
  3. <div class="field">
  4. 姓名:
  5. <input type="text"
  6. v-model="user.username">
  7. </div>
  8.  
  9. <div class="field">
  10. 密码:
  11. <input type="text"
  12. v-model="user.password">
  13. </div>
  14.  
  15. <input type="submit"
  16. value="提交">
  17. </form>
  18. </div>
  19.  
  20. methods: {
  21. submit: function() {
  22. var formData = JSON.stringify(this.user); // 这里才是你的表单数据
  23.  
  24. this.$http.post('http://localhost:8088/post', formData).then((response) => {
  25. // success callback
  26. console.log(response.data);
  27. }, (response) => {
  28. console.log("error");
  29. // error callback
  30. });
  31. }
  32. },

  

  1.  

提交restful接口出现跨域请求的问题

查阅资料得知, 

当contentType设置为三个常用的格式以外的格式,如“application/json”时,会先发送一个试探的OPTIONS类型的请求给服务端。在这时,单纯的在业务接口response添加Access-Control-Allow-Origin 由于还没有走到所以不会起作用。

解决方案: 
在服务端增加一个拦截器 
用于处理所有请求并加上允许跨域的

  1. public class CommonInterceptor implements HandlerInterceptor {
  2.  
  3. private List<String> excludedUrls;
  4.  
  5. public List<String> getExcludedUrls() {
  6. return excludedUrls;
  7. }
  8.  
  9. public void setExcludedUrls(List<String> excludedUrls) {
  10. this.excludedUrls = excludedUrls;
  11. }
  12.  
  13. /**
  14. *
  15. * 在业务处理器处理请求之前被调用 如果返回false
  16. * 从当前的拦截器往回执行所有拦截器的afterCompletion(),
  17. * 再退出拦截器链, 如果返回true 执行下一个拦截器,
  18. * 直到所有的拦截器都执行完毕 再执行被拦截的Controller
  19. * 然后进入拦截器链,
  20. * 从最后一个拦截器往回执行所有的postHandle()
  21. * 接着再从最后一个拦截器往回执行所有的afterCompletion()
  22. *
  23. * @param request
  24. *
  25. * @param response
  26. */
  27. public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
  28. Object handler) throws Exception {
  29. response.setHeader("Access-Control-Allow-Origin", "*");
  30. response.setHeader("Access-Control-Allow-Methods", "*");
  31. response.setHeader("Access-Control-Max-Age", "3600");
  32. response.setHeader("Access-Control-Allow-Headers",
  33. "Origin, X-Requested-With, Content-Type, Accept");
  34. return true;
  35. }
  36.  
  37. // 在业务处理器处理请求执行完成后,生成视图之前执行的动作
  38. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
  39. ModelAndView modelAndView) throws Exception {
  40.  
  41. }
  42.  
  43. /**
  44. *
  45. * 在DispatcherServlet完全处理完请求后被调用
  46. * 当有拦截器抛出异常时,
  47. * 会从当前拦截器往回执行所有的拦截器的afterCompletion()
  48. *
  49. * @param request
  50. *
  51. * @param response
  52. *
  53. * @param handler
  54. *
  55. */
  56. public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
  57. Object handler, Exception ex) throws Exception {
  58.  
  59. }
  60. }

  1. spring resultful无法像在jsp提交表单一样处理数据必须加上@RequestBody,可以直接json转换object,但是对与没有bean的表单数据,建议转换为map对象,类似@RequestBody Map

vue中如何获取后台数据的更多相关文章

  1. Vue axios异步获取后台数据alert提示undefined

    记录一个小问题,关于分页查询套餐 前台通过axios异步请求获取后台数据alert弹出数据提示undefined 下面有三个bean PageResult /** * 分页结果封装对象 */ publ ...

  2. Vue中对获取的数据进行重新排序

    var Enumerable = require('linq'); // 使用linq 按照RegisterID排序listJust是自己定义的数组,来接收数据.listJust: [] addDat ...

  3. Vue中 等待DOM或者数据完成 在执行 --this.$nextTick()

    虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做.比如一个新闻滚动的列表项.如果在这里需要操作dom, 应该是等待 Vue 完成更新 DO ...

  4. Struts1.x下使用jquery的Ajax获取后台数据

        jquery中有多种Ajax方法来获取后台数据,我使用的是$.get()方法,具体的理论我不解释太多,要解释也是从别的地方copy过来的.下面就介绍我的项目中的实现方法.     前台页面: ...

  5. Java获取后台数据,动态生成多行多列复选框

    本例目标: 获取后台数据集合,将集合的某个字段,比如:姓名,以复选框形式显示在HTML页面 应用场景: 获取数据库的人员姓名,将其显示在页面,供多项选择 效果如下: 一.后台 查询数据库,返回List ...

  6. 用ajax获取后台数据,返回json数据,怎么在前台使用?

    用ajax获取后台数据,返回json数据,怎么在前台使用呢?后台 C# code   ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 if (dataType == &qu ...

  7. php 从一个数组中随机获取固定数据

    <?php /* * * 通过一个标识,从一个数组中随机获取固定数据 * $arr 数组 * $num 获取的数量 * $time 随机固定标识值,一般用固定时间或者某个固定整型 * */ fu ...

  8. html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感)

    html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感) 效果图: 运行原理和技术: 当页面加载完毕,利用jquery向后台发送ajax请求,去后台拼接<select>&l ...

  9. 前台通过ajax获取后台数据,PHP如何返回中文数据

    现在经常使用Ajax调用后台php获取后台数据,但是PHP返回的数据如果含有中文的话,Ajax会无法识别,那咋整呢,我用的是比较笨的方法,但是实用: 方法一: echo urldecode(json_ ...

随机推荐

  1. [bzoj4411] [Usaco2016 Feb]Load balancing

    先离散化一下(也可以不用 枚举横坐标,用线段树维护两边纵坐标上的节点数. 每次在线段树上二分...(感觉似乎树状数组也行? #include<cstdio> #include<ios ...

  2. HDU_5523Game

    Game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Sub ...

  3. android文件选择器、仿淘宝编辑页面、新手引导层等源码

    Android精选源码 单片机和安卓应用,传感器 文件选择器 android滑动选择的尺子view源码 android视频录制 视频压缩的源码 仿今日头条顶部导航指示器源码 Android框架+常用控 ...

  4. FineReport父子格实现动态参数注入

    "深入学习FineReport后发现其功能及其强大,之前使用存储过程实现的报表完全可以使用FineReport本身的功能实现. 当你需要的表名,查询条件等均未知的时候,使用"动态参 ...

  5. chorme浏览器的Access-Control-Allow-Origin拦截限制

    今天在公司调试一个项目,这个项目的前后端是分离开的,也就是说前后端是在两个站点上的.我负责的前端页面在请求后端数据的时候数据可以拿到,但是chrome安全级别高,自动拦截跨域和站点的数据请求及交互,出 ...

  6. 图解vue生命周期

    学习vue时搞清楚生命周期可以帮助你知道什么时候在什么地方执行该执行的方法,话不多说上图: 复制下面代码可以在控制台更详细展示各个钩子的状态 <!DOCTYPE html> <htm ...

  7. javascript之事件监听

    addEventListener是一个监听事件并处理相应的函数,用于向指定元素添加事件句柄,可使用removeEventListener()方法来移除addEventListener()方法添加的事件 ...

  8. HDU 2119 Matrix

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2119 解题思路: 处理数据,使用公式最小点覆盖数=最大匹配数,使用匈牙利算法求二分图最大匹配即可. ...

  9. node学习笔记2 —— npm包管理

    全局模式安装包 将包安装为全局可用的可执行命令, 并非可以从任意地方require 将 package.json中bin定义的文件软链到统一的目录下, 该目录可以通过如下方式推算出来: path.re ...

  10. js object 常用方法总结

    Object.assign(target,source1,source2,...) 该方法主要用于对象的合并,将源对象source的所有可枚举属性合并到目标对象target上,此方法只拷贝源对象的自身 ...