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 相关文章推荐
JavaScript的类型转换(字符转数字 数字转字符)
Aug 30 Javascript
ASP.NET jQuery 实例1(在TextBox里面创建一个默认提示)
Jan 13 Javascript
jquery 扑捉回车键事件代码
Apr 24 Javascript
JS和jQuery使用submit方法无法提交表单的原因分析及解决办法
May 17 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
Jun 01 Javascript
详解vue.js2.0父组件点击触发子组件方法
May 10 Javascript
vue中appear的用法
Aug 17 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
Jan 02 jQuery
在HTML文档中嵌入JavaScript的四种方法
May 07 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
vue 解决文本框被键盘遮住的问题
Nov 06 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
Dec 09 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
不用mod_rewrite直接用php实现伪静态化页面代码
2008/10/04 PHP
PHP 年龄计算函数(精确到天)
2012/06/07 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
PHP快速生成各种信息提示框的方法
2016/02/03 PHP
javascript+iframe 实现无刷新载入整页的代码
2010/03/17 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
jQuery动画显示和隐藏效果实例演示(附demo源码下载)
2015/12/31 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
jQuery中animate的几种用法与注意事项
2016/12/12 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
JavaScript中的E-mail 地址格式验证
2018/03/28 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
python 读入多行数据的实例
2018/04/19 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
pycharm重置设置,恢复默认设置的方法
2018/10/22 Python
pandas中apply和transform方法的性能比较及区别介绍
2018/10/30 Python
Pandas的read_csv函数参数分析详解
2019/07/02 Python
原生python实现knn分类算法
2019/10/24 Python
Series和DataFrame使用简单入门
2019/11/13 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
基于OpenCV的网络实时视频流传输的实现
2020/11/15 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
CSS3 3D酷炫立方体变换动画的实现
2019/03/26 HTML / CSS
Photobook澳大利亚:制作相片书,婚礼卡,旅行相簿
2017/01/12 全球购物
甜品蛋糕店创业计划书范文
2014/02/06 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
学校评语大全
2014/05/06 职场文书
《鲸》教学反思
2016/02/23 职场文书
Golang的继承模拟实例
2021/06/30 Golang