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 uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
JS控制一个DIV层在指定时间内消失的方法
Feb 17 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
浅谈jQuery操作类数组的工具方法
Dec 23 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
微信小程序实现移动端滑动分页效果(ajax)
Jun 13 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
基于Datatables跳转到指定页的简单实例
Nov 09 Javascript
轻量级JS Cookie插件js-cookie的使用方法
Mar 22 Javascript
jQuery中图片展示插件highslide.js的简单dom
Apr 22 jQuery
Makefile/cmake/node-gyp中区分判断不同平台的方法
Dec 18 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
Laravel学习教程之本地化模块
2017/08/18 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
JavaScript入门教程(7) History历史对象
2009/01/31 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
Javascript原型链的原理详解
2016/01/05 Javascript
Nodejs高扩展性的模板引擎 functmpl简介
2017/02/13 NodeJs
js实现动态显示时间效果
2017/03/06 Javascript
vue+vue-validator 表单验证功能的实现代码
2017/11/13 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
使用VUE实现在table中文字信息超过5个隐藏鼠标移到时弹窗显示全部
2019/09/16 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
vue中jsonp插件的使用方法示例
2020/09/10 Javascript
[16:04]DOTA2海涛带你玩炸弹 9月5日更新内容详解
2014/09/05 DOTA
Python sys.path详细介绍
2013/10/17 Python
Python显示进度条的方法
2014/09/20 Python
Python中用函数作为返回值和实现闭包的教程
2015/04/27 Python
详解duck typing鸭子类型程序设计与Python的实现示例
2016/06/03 Python
python利用MethodType绑定方法到类示例代码
2017/08/27 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Python实现密码薄文件读写操作
2019/12/16 Python
python实现串口通信的示例代码
2020/02/10 Python
Python PyQt5整理介绍
2020/04/01 Python
python对批量WAV音频进行等长分割的方法实现
2020/09/25 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
Cole Haan官方网站:美国时尚潮流品牌
2017/12/06 全球购物
windeln官方海外旗舰店:德淘超人气母婴超市
2017/12/15 全球购物
2014年学生会生活部工作总结
2014/11/07 职场文书
Go语言的协程上下文的几个方法和用法
2022/04/11 Golang