vue 请求后台数据

需要引用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 map

时间: 2024-10-25 09:38:10

vue 请求后台数据的相关文章

select2插件:使用input标签并采用ajax请求后台数据,搜索框无效

问题描述 select2插件:使用input标签并采用ajax请求后台数据,搜索框无效 代码如下: $("#countyCd").select2({ placeholder: "请选择县名称", allowClear: true, //minimumInputLength: 2, ajax: { url: getContentPath() + "xxx", dataType: 'json', data: function (term, page)

请求后台数据使用xutils 添加头信息 请求不回来数据

问题描述 请求后台数据使用xutils 添加头信息 请求不回来数据 请求后台数据使用xutils 添加头信息 请求不回来数据不知道这么回事 添加头信息如何请求后台数据

Ajax异步请求PHP数据

接到了老师的一个作业,实现的布局如图: 如果输入了科室ID,科室名字只显示与ID对应的,若没有输入,则显示全部,然后根据I科室名字的值,在所属大科中的文本框自动显示科室名字所在的大科.例如:选择了心血管内科,则在所属大科显示内科. 主要代码如下: 根据ID请求科室 function showHint(str) { var xmlhttp; if (window.XMLHttpRequest) {// IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new

标签-js获取后台数据的具体代码该如何写???

问题描述 js获取后台数据的具体代码该如何写??? 5C 在前端用js去获取后台的图片等一些数据,然后给指定标签赋值,具体的代码该如何写?求大神解答~~~菜鸟求知~~~ 解决方案 /* by y0umer [60min] Function:createXmlHttpRequestobject returm Xmlobject; */ var XmlHttp; function createXmlHttpRequestObject(){ if(window.ActiveXobject){ // 判

服务器-Android手机端与后台数据同步问题

问题描述 Android手机端与后台数据同步问题 假设手机端发起了卡注销请求,由于后台走的流程较多,导致连接超时, 然而数据库中的相应注销字段已经修改. 然而因为连接超时,手机端该卡的状态仍然是可用状态. 问题:除了手机端开线程轮询服务器的方法外,还有什么方式? 可以保证手机端与服务器端的数据同步. 解决方案 这个没关系,下次使用时,后天返回已注销就是了,本次操作如果错误,提示用户,可以让用户主动刷新,没必要轮询刷新

浏览器-IE ajax submit 图片,前台回调后台数据出现提示下载

问题描述 IE ajax submit 图片,前台回调后台数据出现提示下载 IE浏览器下 ,ajax submit 图片,后台返回ajaxresult ,图片已经保存,但是会提示让你操作保存,保存下来是请求信息,什么原因?chrome下运行正常. 解决方案 最好能给出解决方案,我网上看到很多方法,说ie对json格式会出现下载,必须要用 tex/html,但是我不想这么做.我需要后台返回的参数做判断! 解决方案二: 我已经知道怎么解决,这种情况我也是少遇到.

easyui-datagrid 禁止自动访问请求url数据

问题描述 datagrid 禁止自动访问请求url数据 我在一个结果页面中添加了一个datagrid,想从后台controller中传递一组数据显示到 这个表格当中,但是跳到这个页面的时候那个datagrid会自动访问里面设置的url,有什么办法禁止自动访问么.(如果不设置datagrid中的url页面初始化会报错) 解决方案 可以先设置url:'',等到需要加载的时候再用load重新加载

有关文件上传 非ajax提交 得到后台数据问题_javascript技巧

下文给大家介绍文件上传非ajax提交得到后台数据的操作方法,具体详情如下所示: <form name="configForm" id="configForm" method="post" action="" > .......... </form> 根据id获得表单数据然后发送ajax请求,获得后台返回数据,处理数据,完美. 但是如果需要上传文件, <tr> <td class=&qu

html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感)

html页面下拉列表中动态添加后台数据(格式化数据,显示出数据的层次感) 效果图:     运行原理和技术: 当页面加载完毕,利用jquery向后台发送ajax请求,去后台拼接<select></select>中的option字符串.让后将字符串响应回来,动态添加到<select>中.其中的字符串中包含了后台的数据. 页面js代码:   1 <script type="text/javascript"> 2 //加载部门 3 functi