vue 请求后台数据
2023-09-27 14:26:11 时间
需要引用vue-resource
安装请参考https://github.com/pagekit/vue-resource官方文档
在入口函数中加入
import VueResource from vue-resource Vue.use(VueResource);
在package.json文件中加入
"dependencies": { "vue": "^2.2.6", "vue-resource":"^1.2.1" },
请求如下
mounted: function () { // GET /someUrl this.$http.get(http://localhost:8088/test).then(response = { console.log(response.data); // get body data // this.someData = response.body; }, response = { console.log("error"); },
注意
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.
解决办法:在接口中设置
response.setHeader("Access-Control-Allow-Origin", "*");
2.使用jsonp请求
但是出现如下错误
Uncaught SyntaxError: Unexpected token
查看请求,数据已返回,未解决.
div id="app-7" form @submit.prevent="submit" div input type="text" v-model="user.username" /div
submit: function() { var formData = JSON.stringify(this.user); // 这里才是你的表单数据 this.$http.post(http://localhost:8088/post, formData).then((response) = { // success callback console.log(response.data); }, (response) = { console.log("error"); // error callback },
提交restful接口出现跨域请求的问题
查阅资料得知,
当contentType设置为三个常用的格式以外的格式,如“application/json”时,会先发送一个试探的OPTIONS类型的请求给服务端。在这时,单纯的在业务接口response添加Access-Control-Allow-Origin 由于还没有走到所以不会起作用。
解决方案:
在服务端增加一个拦截器
用于处理所有请求并加上允许跨域的头
public class CommonInterceptor implements HandlerInterceptor { private List String excludedUrls; public List String getExcludedUrls() { return excludedUrls; public void setExcludedUrls(List String excludedUrls) { this.excludedUrls = excludedUrls; * 在业务处理器处理请求之前被调用 如果返回false * 从当前的拦截器往回执行所有拦截器的afterCompletion(), * 再退出拦截器链, 如果返回true 执行下一个拦截器, * 直到所有的拦截器都执行完毕 再执行被拦截的Controller * 然后进入拦截器链, * 从最后一个拦截器往回执行所有的postHandle() * 接着再从最后一个拦截器往回执行所有的afterCompletion() * @param request * @param response public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "*"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); return true; // 在业务处理器处理请求执行完成后,生成视图之前执行的动作 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { * 在DispatcherServlet完全处理完请求后被调用 * 当有拦截器抛出异常时, * 会从当前拦截器往回执行所有的拦截器的afterCompletion() * @param request * @param response * @param handler public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { }
spring resultful无法像在jsp提交表单一样处理数据必须加上@RequestBody,可以直接json转换object,但是对与没有bean的表单数据,建议转换为map对象,类似@RequestBody Map map
vue数据页面渲染完成以后操作DOM 在使用Vue框架的时候,有时候需要在Vue在页面数据渲染完成之后调用方法,不然获取不到准确的数据,特别是在获取列表的高度的时候,由于数据没有加载完,获取不到准确的高度。 nextTick:在下次 DOM 更新循环结束之后执行延迟回调。
相关文章
- Java项目(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)
- vue 父组件与子组件的三生三世
- vue 记一次编译没反应、无进度、没有任何报错的提示,但后台却TM一直消耗内存的BUG:
- 【整理分享】一些常见Vue面试题(附答案解析)
- vue页面加水印
- 关于vue的语法规则检测报错问题
- vue 监听器watch--总结
- Vue--一个页面实现多个同级组件---命名视图实现经典布局(头部,左右布局)
- Vue评论案例--数据存放本地---联系子组件调用父组件方法(子组件点击发表-调用父组件更新评论列表)
- vue实战入门后台篇八:springboot+mybatis实现网站后台-客户端界面数据对接
- vue实战入门后台篇十:springboot+mybatis实现网站后台-项目整合发布测试
- vue实战入门后台篇七:springboot+mybatis实现网站后台-各实体界面接口对接
- vue实战入门后台篇五:springboot+mybatis实现网站后台-操作日志功能实现
- vue实战入门进阶篇四:vue+elementui实现网站后台-主页框架实现
- vue实战入门进阶篇三:vue+elementui实现网站后台-系统框架搭建
- vue文档摘录五:实例 property
- nginx下载 并将vue项目部署上去
- Vue学习第37天——.sync修饰符、$attrs和$listeners属性的使用场景和案例
- vue-解决Vue打包上线之后部分CSS不生效的问题
- vue中created、mounted等方法整理
- vue 表单验证调后台数据验证
- vue前后台数据交互vue-resource文档