vue 请求后台数据的实例代码

网络编程 2021-07-04 18:32www.168986.cn编程入门
本篇文章主要介绍了vue 请求后台数据的实例代码,长沙网络推广觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随长沙网络推广过来看看吧、

需要引用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.在请求接口数据时,涉及到跨域请求

出现狼蚁网站SEO优化错误:

代码如下:

XMLHttpRequest cannot load . No ‘Aess-Control-Allow-Origin' header is present on the requested resource. Origin ‘http://localhost:8080' is therefore not allowed aess.

解决办法:在接口中设置

response.setHeader("Aess-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) => {
       // suess callback
       console.log(response.data);
     }, (response) => {
        console.log("error");
       // error callback
     });
    }
  },

提交restful接口出现跨域请求的问题

查阅资料得知,

当contentType设置为三个常用的格式以外的格式,如“application/json”时,会先发送一个试探的OPTIONS类型的请求给服务端。在这时,单纯的在业务接口response添加Aess-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("Aess-Control-Allow-Origin", "");
    response.setHeader("Aess-Control-Allow-Methods", "");
    response.setHeader("Aess-Control-Max-Age", "3600");
    response.setHeader("Aess-Control-Allow-Headers",
        "Origin, X-Requested-With, Content-Type, Aept");
    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、

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持狼蚁SEO。

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by