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 相关文章推荐
js不是基础的基础
Dec 24 Javascript
新手入门常用代码集锦
Jan 11 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
Feb 07 Javascript
JavaScript下通过的XMLHttpRequest发送请求的代码
Jun 28 Javascript
三种动态加载js的jquery实例代码另附去除js方法
Apr 30 Javascript
浅谈js中变量初始化
Feb 03 Javascript
JQuery限制复选框checkbox可选中个数的方法
Apr 20 Javascript
jQuery中数据缓存$.data的用法及源码完全解析
Apr 29 Javascript
Angular directive递归实现目录树结构代码实例
May 05 Javascript
JavaScript实现的数字与字符串转换功能示例
Aug 23 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
Mar 25 Javascript
vue+element UI实现树形表格
Dec 29 Vue.js
深入理解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
libmysql.dll与php.ini是否真的要拷贝到c:\windows目录下呢
2010/03/15 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
js 走马灯简单实例
2013/11/21 Javascript
javascript制作坦克大战全纪录(2)
2014/11/27 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jquery实现叠层3D文字特效代码分享
2015/08/21 Javascript
JavaScript实现的多个图片广告交替显示效果代码
2015/09/04 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
jQuery制作网页版选项卡
2016/07/28 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
js实现可旋转的立方体模型
2016/10/16 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
浅析Git版本控制器使用
2017/12/10 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
python微信公众号开发简单流程
2018/03/23 Python
Python 使用 Pillow 模块给图片添加文字水印的方法
2019/08/30 Python
python实现电子词典
2020/03/03 Python
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
元宵节晚会主持人串词
2014/03/25 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
少先队大队委竞选口号
2015/12/25 职场文书