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 相关文章推荐
原型方法的不同写法居然会影响调试的解决方法
Mar 08 Javascript
摘自启点的main.js
Apr 20 Javascript
基于jQuery的弹出框插件
Mar 18 Javascript
js动态添加事件并可传参数示例代码
Oct 21 Javascript
js转义字符介绍
Nov 05 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
Dec 04 Javascript
两种方法基于jQuery实现IE浏览器兼容placeholder效果
Oct 14 Javascript
node.js使用require()函数加载模块
Nov 26 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
Feb 15 Javascript
jQuery中通过ajax调用webservice传递数组参数的问题实例详解
May 20 Javascript
基于JavaScript实现控制下拉列表
May 08 Javascript
js实现简单贪吃蛇游戏
May 15 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简单的伪原创程序,配合商城采集用的
2010/10/12 PHP
php中关于普通表单多文件上传的处理方法
2011/03/25 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
php添加数据到xml文件的简单例子
2016/09/08 PHP
php PDO异常处理详解
2016/11/20 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
PHP实现微信提现功能
2018/09/30 PHP
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
用Javascript获取页面元素的具体位置
2013/12/09 Javascript
JS动态增加删除UL节点LI及相关内容示例
2014/05/21 Javascript
优化Node.js Web应用运行速度的10个技巧
2014/09/03 Javascript
SWFObject基本用法实例分析
2015/07/20 Javascript
让你一句话理解闭包(简单易懂)
2016/06/03 Javascript
针对BootStrap中tabs控件的美化和完善(推荐)
2016/07/06 Javascript
原生JS实现跑马灯效果
2017/02/20 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
浅谈在Vue-cli里基于axios封装复用请求
2017/11/06 Javascript
详解bootstrap导航栏.nav与.navbar区别
2017/11/23 Javascript
vue-awesome-swiper滑块插件使用方法详解
2017/11/27 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
vue 多入口文件搭建 vue多页面搭建的实例讲解
2018/03/12 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
vue动态注册组件实例代码详解
2019/05/30 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
[00:43]2016完美“圣”典风云人物:单车宣传片
2016/12/02 DOTA
[01:23]2019完美世界全国高校联赛(春季赛)合肥全国总决赛
2019/06/10 DOTA
Python中使用PIPE操作Linux管道
2015/02/04 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
Python字符串hashlib加密模块使用案例
2020/03/10 Python
汤米巴哈马官方网站:Tommy Bahama
2017/05/13 全球购物
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
以下的初始化有什么区别
2013/12/16 面试题
中班中秋节活动反思
2014/02/18 职场文书
幼儿园大班毕业教师寄语
2014/04/03 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android