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 bind事件使用详解
May 05 Javascript
跨域传值即主页面与iframe之间互相传值
Dec 09 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
再谈JavaScript线程
Jul 10 Javascript
JavaScript中利用Array和Object实现Map的方法
Jul 27 Javascript
利用VUE框架,实现列表分页功能示例代码
Jan 12 Javascript
你真的了解BOM中的history对象吗
Feb 13 Javascript
微信小程序之滚动视图容器的实现方法
Sep 26 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
Apr 26 jQuery
Windows下Node爬虫神器Puppeteer安装记
Jan 09 Javascript
vue自定义指令限制输入框输入值的步骤与完整代码
Aug 30 Javascript
如何使用jQuery操作Cookies方法解析
Sep 08 jQuery
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中文本操作的类
2007/03/17 PHP
php与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP数据类型的总结分析
2013/06/13 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
PHP-FPM之Chroot执行环境详解
2015/08/03 PHP
php HTML无刷新提交表单
2016/04/05 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
Centos PHP 扩展Xchche的安装教程
2016/07/09 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
JS保留两位小数,多位小数的示例代码
2014/01/07 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
学习使用bootstrap3栅格系统
2016/04/12 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
vue中各选项及钩子函数执行顺序详解
2018/08/25 Javascript
微信小程序实现左右列表联动
2020/05/19 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
opencv-python 提取sift特征并匹配的实例
2019/12/09 Python
python对Excel的读取的示例代码
2020/02/14 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
英国最大的海报商店:GB Posters
2018/03/20 全球购物
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
轻化专业学生实习自我鉴定
2013/09/20 职场文书
建筑班组长岗位职责
2014/01/02 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js