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 相关文章推荐
json 入门基础教程 推荐
Oct 31 Javascript
js导航菜单(自写)简单大方
Mar 28 Javascript
仿谷歌主页js动画效果实现代码
Jul 14 Javascript
Node.js实现在目录中查找某个字符串及所在文件
Sep 03 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
webpack学习--webpack经典7分钟入门教程
Jun 28 Javascript
jQuery菜单实例(全选,反选,取消)
Aug 28 jQuery
浅谈ajax在jquery中的请求和servlet中的响应
Jan 22 jQuery
微信上传视频文件提示(推荐)
Nov 22 Javascript
Openlayers测量距离与面积的实现方法
Sep 25 Javascript
JavaScript继承的三种方法实例
May 12 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
APMServ使用说明
2006/10/23 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
浅析PHP中的i++与++i的区别及效率
2016/06/15 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
表单内同名元素的控制
2006/11/22 Javascript
javascript 写类方式之三
2009/07/05 Javascript
Js保留小数点的4种效果实现代码分享
2014/04/12 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
JQuery中serialize()、serializeArray()和param()方法示例介绍
2014/07/31 Javascript
用循环或if语句从json中取数据示例
2014/08/18 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
[03:51]吞吞映像 每周精彩击杀top10第二弹
2014/06/25 DOTA
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
Python装饰器模式定义与用法分析
2018/08/06 Python
Python3爬虫学习之MySQL数据库存储爬取的信息详解
2018/12/12 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
2020/11/05 Python
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
校园自助餐厅的创业计划书
2013/12/26 职场文书
社区党员先进事迹
2014/01/22 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
电力安全事故反思
2014/04/27 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
2014年学生会部门工作总结
2014/11/07 职场文书
军训通讯稿范文
2015/07/18 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书