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 相关文章推荐
简单实用的js调试logger组件实现代码
Nov 20 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
Jun 09 Javascript
js sort 二维数组排序的用法小结
Jan 24 Javascript
jquery实现ajax提交form表单的方法总结
Mar 03 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
Jul 23 Javascript
jQuery中first()方法用法实例
Jan 06 Javascript
浅谈JavaScript中的this指针和引用知识
Aug 05 Javascript
jQuery滑动到底部加载下一页数据的实例代码
May 22 jQuery
JS实现闭包中的沙箱模式示例
Sep 07 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 Javascript
JS获取当前时间的年月日时分秒及时间的格式化的方法
Dec 18 Javascript
JavaScript原生数组函数实例汇总
Oct 14 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
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
延长phpmyadmin登录时间的方法
2011/02/06 PHP
php Session存储到Redis的方法
2013/11/04 PHP
php中使用getimagesize获取图片、flash等文件的尺寸信息实例
2014/04/29 PHP
php实现根据字符串生成对应数组的方法
2014/09/22 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
2015/07/29 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JS Replace 全部替换字符的用法小结
2013/12/24 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
BootStrap使用file-input插件上传图片的方法
2016/09/05 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
详解vue2路由vue-router配置(懒加载)
2017/04/08 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
AngularJs的$http发送POST请求,php无法接收Post的数据问题及解决方案
2020/08/13 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
Python自动登录126邮箱的方法
2015/07/10 Python
Python实现的破解字符串找茬游戏算法示例
2017/09/25 Python
Pandas实现DataFrame按行求百分数(比例数)
2019/12/27 Python
python实现简单的学生管理系统
2021/02/22 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
文秘专业应届生求职信范文
2013/11/14 职场文书
工作时间上网检讨书
2014/02/03 职场文书
商务日语专业自荐信
2014/04/17 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
团代会闭幕词
2015/01/28 职场文书
法务专员岗位职责
2015/02/14 职场文书
钢琴师观后感
2015/06/12 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
Vue+TypeScript中处理computed方式
2022/04/02 Vue.js