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 相关文章推荐
Juqery Html(),append()等方法的Bug解决方法
Dec 13 Javascript
一个简单的弹性返回顶部JS代码实现介绍
Jun 09 Javascript
jQuery使用hide方法隐藏页面上指定元素的方法
Mar 30 Javascript
JavaScript中for循环的使用详解
Jun 03 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
Aug 10 Javascript
浅谈JS运算符&&和|| 及其优先级
Aug 10 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
js使用swiper实现层叠轮播效果实例代码
Dec 12 Javascript
Centos7 安装Node.js10以上版本的方法步骤
Oct 15 Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 Javascript
如何用Node.js编写内存效率高的应用程序
Apr 30 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入门学习知识点二 PHP简单的分页过程与原理
2011/07/14 PHP
php+js实现图片的上传、裁剪、预览、提交示例
2013/08/27 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
PDO::commit讲解
2019/01/27 PHP
wordpress之js库集合研究介绍
2007/08/17 Javascript
JavaScript 事件系统
2010/07/22 Javascript
统计出现最多的字符次数的js代码
2010/12/03 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
Node.js实现在目录中查找某个字符串及所在文件
2014/09/03 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
2017/09/11 Javascript
js用类封装pop弹窗组件
2017/10/08 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
vue实现浏览器全屏展示功能
2019/11/27 Javascript
echarts实现晶体球面投影的实例教程
2020/10/10 Javascript
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python编写屏幕截图程序方法
2015/02/18 Python
Python while、for、生成器、列表推导等语句的执行效率测试
2015/06/03 Python
八大排序算法的Python实现
2021/01/28 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
python 正确保留多位小数的实例
2018/07/16 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
Django 解决上传文件时,request.FILES为空的问题
2020/05/20 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Myprotein荷兰官网:欧洲第一运动营养品牌
2020/07/11 全球购物
农民工讨薪标语
2014/06/26 职场文书
公司人事任命通知
2015/04/20 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL