vue 请求后台数据的实例代码


Posted in Javascript onJune 22, 2017

需要引用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 class="field">
        姓名:
        <input type="text"
            v-model="user.username">
      </div>


      <div class="field">
        密码:
        <input type="text"
            v-model="user.password">
      </div>


      <input type="submit"
          value="提交">
      </form>
  </div>

methods: {
    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、

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
JavaScript中的运算符种类及其规则介绍
Sep 26 Javascript
js的window.showModalDialog及window.open用法实例分析
Jan 29 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
Dec 18 Javascript
JavaScript数据结构之二叉树的遍历算法示例
Apr 13 Javascript
Angularjs 动态添加指令并绑定事件的方法
Apr 13 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
Vue导出json数据到Excel电子表格的示例
Dec 04 Javascript
详解小程序缓存插件(mrc)
Aug 17 Javascript
js根据后缀判断文件文件类型的代码
May 09 Javascript
JS实现简易贪吃蛇游戏
Aug 24 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 #Javascript
vue如何从接口请求数据
Jun 22 #Javascript
利用node.js制作命令行工具方法教程(一)
Jun 22 #Javascript
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 #Javascript
详解vue 配合vue-resource调用接口获取数据
Jun 22 #Javascript
vue使用stompjs实现mqtt消息推送通知
Jun 22 #Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
Jun 22 #Javascript
You might like
php读取数据库信息的几种方法
2008/05/24 PHP
php 8小时时间差的解决方法小结
2009/12/22 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
laravel 5 实现模板主题功能
2015/03/02 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
CI框架常用函数封装实例
2016/11/21 PHP
JavaScript生成的动态下雨背景效果实现方法
2015/02/25 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
2015/04/01 Javascript
详解Document.Cookie
2015/12/25 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
2016/01/26 Javascript
基于jquery实现百度新闻导航菜单滑动动画
2016/03/15 Javascript
Bootstrap组件(一)之菜单
2016/05/11 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
服务端预渲染之Nuxt(使用篇)
2019/04/08 Javascript
JavaScript实现轮播图片完整代码
2020/03/07 Javascript
python中字符串的操作方法大全
2018/06/03 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
基于Python中Remove函数的用法讨论
2020/12/11 Python
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
Java平台和其他软件平台有什么不同
2015/06/05 面试题
30岁生日感言
2014/01/25 职场文书
记帐员岗位责任制
2014/02/08 职场文书
《乌鸦和狐狸》教学反思
2014/02/08 职场文书
优质服务活动实施方案
2014/05/02 职场文书
公司承诺书格式
2014/05/21 职场文书
蛋糕店创业计划书范文
2014/09/21 职场文书
2014报到证办理个人委托书
2014/10/08 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
2015年预防青少年违法犯罪工作总结
2015/05/22 职场文书
优秀的商业计划书,让融资一步到位
2019/05/07 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js