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 相关文章推荐
JavaScript版代码高亮
Jun 26 Javascript
JS Timing
Apr 21 Javascript
指定位置如果有图片显示图片,无图片显示广告的JS
Jun 05 Javascript
基于JQuery 滑动与动画的说明介绍
Apr 18 Javascript
javascript封装简单实现方法
Aug 11 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 Javascript
Bootstrap 网站实例之单页营销网站
Oct 20 Javascript
JSON 数据详解及实例代码分析
Jan 20 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
vue跨域解决方法
Oct 15 Javascript
JavaScript生成简单等差数列
Nov 28 Javascript
webpack结合express实现自动刷新的方法
May 07 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输出不同的心形图案
2016/04/22 PHP
浅析PHP数据导出知识点
2018/02/17 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
用正则表达式 动态创建/增加css style script 兼容IE firefox
2009/03/10 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
js null,undefined,字符串小结
2010/08/21 Javascript
JavaScript实现页面滚动图片加载(仿lazyload效果)
2011/07/22 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
js网页版计算器的简单实现
2013/07/02 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
jQuery+Ajax实现无刷新分页
2015/10/30 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
2016/11/18 Javascript
学习使用bootstrap的modal和carousel
2016/12/09 Javascript
js时间戳格式化成日期格式的多种方法介绍
2017/02/16 Javascript
使用clipboard.js实现复制功能的示例代码
2017/10/16 Javascript
详解vue后台系统登录态管理
2019/04/02 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
2020/08/05 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
Python中title()方法的使用简介
2015/05/20 Python
Python中的推导式使用详解
2015/06/03 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
Nginx+Uwsgi+Django 项目部署到服务器的思路详解
2020/05/08 Python
django 外键创建注意事项说明
2020/05/20 Python
Keras在训练期间可视化训练误差和测试误差实例
2020/06/16 Python
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
大学生村官个人总结
2015/02/15 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
2015年禁毒工作总结
2015/04/30 职场文书
运动会开幕式通讯稿
2015/07/18 职场文书
致接力运动员加油稿
2015/07/21 职场文书
mybatis使用oracle进行添加数据的方法
2021/04/27 Oracle