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判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
Oct 15 Javascript
一个页面放2段图片滚动代码出现冲突的问题如何解决
Dec 21 Javascript
javascript实现信息的显示和隐藏如注册页面
Dec 03 Javascript
BootStrap CSS全局样式和表格样式源码解析
Jan 20 Javascript
javascript如何用递归写一个简单的树形结构示例
Sep 06 Javascript
微信小程序顶部可滚动导航效果
Oct 31 Javascript
webpack构建的详细流程探底
Jan 08 Javascript
Vue项目分环境打包的实现步骤
Apr 02 Javascript
JavaScript面向对象的程序设计(犯迷糊的小羊)
May 27 Javascript
javascript利用键盘控制小方块的移动
Apr 20 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
Oct 27 Javascript
JavaScript中关于预编译、作用域链和闭包的理解
Mar 31 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
php绘图之生成饼状图的方法
2015/01/24 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
jQuery 锚点跳转滚动条平滑滚动一句话代码
2010/04/30 Javascript
js过滤HTML标签以及空格的思路及代码
2013/05/24 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
基于JavaScript实现图片连播和联级菜单实例代码
2017/07/28 Javascript
vue实现提示保存后退出的方法
2018/03/15 Javascript
vue实现购物车小案例
2019/09/27 Javascript
JavaScript实现鼠标移入随机变换颜色
2020/11/24 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
python多重继承新算法C3介绍
2014/09/28 Python
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python语言实现获取主机名根据端口杀死进程
2016/03/31 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
Pandas GroupBy对象 索引与迭代方法
2018/11/16 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
Python远程视频监控程序的实例代码
2019/05/05 Python
在pycharm中为项目导入anacodna环境的操作方法
2020/02/12 Python
python爬虫快速响应服务器的做法
2020/11/24 Python
bareMinerals官网:矿物质化妆品和护肤品
2018/02/04 全球购物
医院工作检讨书范文
2014/02/10 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
考察现实表现材料
2014/05/19 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
go使用Gin框架利用阿里云实现短信验证码功能
2021/08/04 Golang
数据设计之权限的实现
2022/08/05 MySQL