Vue-resource实现ajax请求和跨域请求示例


Posted in Javascript onFebruary 23, 2017

vue-resource是Vue提供的体格http请求插件,如同jQuery里的$.ajax,用来和后端交互数据的。

在使用时,首先需要安装vue-resource插件

1.在项目跟目录上安装:

npm install vue-resource

 2.引入resource插件

import VueResource from 'vue-resource'; 
Vue.use(VueResource)

3.发送请求:

this.$http.get("http://www.vrserver.applinzi.com/aixianfeng/apihome.php").then(function(res){ 
  console.log(res) 
 })

ES6写法:

this.$http.get('url', [options]).then((res) => { 
// 处理成功的结果}, (res) => { // 处理失败的结果});

在发送请求后,使用then方法来处理响应结果,then方法有两个参数,第一个参数是响应成功时的回调函数,第二个参数是响应失败时的回调函数。

then方法的回调函数也有两种写法,第一种是传统的函数写法,第二种是更为简洁的ES 6的Lambda写法:

POST请求:

this.$http.post("http://www.vrserver.applinzi.com/aixianfeng/apihome.php",{name:"abc"},{emulateJSON:true}).then( 
   function (res) { 
    // 处理成功的结果 
    alert(res.body); 
   },function (res) { 
   // 处理失败的结果 
   } 
  );

JSONP请求:

new Vue({ ready() { 
 this.$http.jsonp('/url', {name:"abc"}) .then(function (res){ 
  console.log(res) 
 }, function (res) { 
  console.log(res) 
  }); 
 } 
})

吐槽一下,现在应该没有用到JSON的了吧,有的话真呵呵呵了。

支持的HTTP方法

vue-resource的请求API是按照REST风格设计的,它提供了7种请求API:

  • get(url, [options])
  • head(url, [options])
  • delete(url, [options])
  • jsonp(url, [options])
  • post(url, [body], [options])
  • put(url, [body], [options])
  • patch(url, [body], [options])

除了jsonp以外,另外6种的API名称是标准的HTTP方法。当服务端使用REST API时,客户端的编码风格和服务端的编码风格近乎一致,这可以减少前端和后端开发人员的沟通成本。

客户端请求方法 服务端处理方法
this.$http.get(...) Getxxx
this.$http.post(...) Postxxx
this.$http.put(...) Putxxx
this.$http.delete(...) Deletexxx

options对象

发送请求时的options选项对象包含以下属性:

参数 类型 描述
url string 请求的URL
method string 请求的HTTP方法,例如:'GET', 'POST'或其他HTTP方法
body Object, FormDatastring request body
params Object 请求的URL参数对象
headers Object request header
timeout number 单位为毫秒的请求超时时间 (0 表示无超时时间)
before function(request) 请求发送前的处理函数,类似于jQuery的beforeSend函数
progress function(event) ProgressEvent回调处理函数
credientials boolean 表示跨域请求时是否需要使用凭证
emulateHTTP boolean 发送PUT, PATCH, DELETE请求时以HTTP POST的方式发送,并设置请求头的X-HTTP-Method-Override
emulateJSON boolean 将request body以application/x-www-form-urlencoded content type发送

emulateHTTP的作用

如果Web服务器无法处理PUT, PATCH和DELETE这种REST风格的请求,你可以启用enulateHTTP现象。启用该选项后,请求会以普通的POST方法发出,并且HTTP头信息的X-HTTP-Method-Override属性会设置为实际的HTTP方法。

Vue.http.options.emulateHTTP = true;

emulateJSON的作用

如果Web服务器无法处理编码为application/json的请求,你可以启用emulateJSON选项。启用该选项后,请求会以application/x-www-form-urlencoded作为MIME type,就像普通的HTML表单一样。

Vue.http.options.emulateJSON = true;

response对象

response对象包含以下属性:

方法 类型 描述
text() string 以string形式返回response body
json() Object 以JSON对象形式返回response body
blob() Blob 以二进制形式返回response body
属性 类型 描述
ok boolean 响应的HTTP状态码在200~299之间时,该属性为true
status number 响应的HTTP状态码
statusText string 响应的状态文本
headers Object 响应头

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 学习笔记 选择器之五
Jul 23 Javascript
jQuery带箭头提示框tooltips插件集锦
Nov 17 Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
jquery对table做排序操作的实例演示
Aug 10 jQuery
vue-resource拦截器设置头信息的实例
Oct 27 Javascript
浅谈vue项目重构技术要点和总结
Jan 23 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
JS获取url参数,JS发送json格式的POST请求方法
Mar 29 Javascript
使用vue.js在页面内组件监听scroll事件的方法
Sep 11 Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
Apr 09 Javascript
react+antd 递归实现树状目录操作
Nov 02 Javascript
jQuery事件详解
Feb 23 #Javascript
Vue2学习笔记之请求数据交互vue-resource
Feb 23 #Javascript
JavaScript基本类型值-Undefined、Null、Boolean
Feb 23 #Javascript
Javascript 链式作用域详细介绍
Feb 23 #Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
Feb 23 #Javascript
bootstrap weebox 支持ajax的模态弹出框
Feb 23 #Javascript
COM组件中调用JavaScript函数详解及实例
Feb 23 #Javascript
You might like
无数据库的详细域名查询程序PHP版(1)
2006/10/09 PHP
又一个php 分页类实现代码
2009/12/03 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
PHP实现15位身份证号转18位的方法分析
2019/10/16 PHP
Thinkphp 框架扩展之类库扩展操作详解
2020/04/23 PHP
Javascript里使用Dom操作Xml
2007/01/22 Javascript
js常见表单应用技巧
2008/01/09 Javascript
JQuery 风格的HTML文本转义
2009/07/01 Javascript
JS控制阿拉伯数字转为中文大写示例代码
2013/09/04 Javascript
js中的this关键字详解
2013/09/25 Javascript
javascript常见用法总结
2014/05/22 Javascript
jQuery中Ajax的load方法详解
2015/01/14 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
用JS写的一个Ajax库(实例代码)
2016/08/06 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
使用layer模态框给新页面传值的方法
2019/09/27 Javascript
原生JavaScript之es6中Class的用法分析
2020/02/23 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
Python性能提升之延迟初始化
2016/12/04 Python
Python绘制七段数码管实例代码
2017/12/20 Python
django启动uwsgi报错的解决方法
2018/04/08 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
详解爬虫被封的问题
2019/04/23 Python
Django保护敏感信息的方法示例
2019/05/09 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
html5-websocket基于远程方法调用的数据交互实现
2012/12/04 HTML / CSS
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
英国豪华家具和经典家居饰品购物网站:OKA
2020/06/05 全球购物
成都思必达公司C#程序员招聘面试题
2013/06/26 面试题
口头翻译求职人自荐信
2013/12/07 职场文书
出纳试用期自我评价
2015/03/10 职场文书
vue使用echarts实现折线图
2022/03/21 Vue.js