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定时变换图片实例代码
Mar 17 Javascript
JS获得URL超链接的参数值实例代码
Jun 21 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
Dec 08 Javascript
jQuery中选择器小问题(新人难免遇到)
Mar 31 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
Mar 04 Javascript
JS动态改变浏览器标题的方法
Apr 06 Javascript
深入理解JavaScript中的块级作用域、私有变量与模块模式
Oct 31 Javascript
Node.js使用Koa搭建 基础项目
Jan 08 Javascript
javascript中call,apply,callee,caller用法实例分析
Jul 24 Javascript
Vue 利用指令实现禁止反复发送请求的两种方法
Sep 15 Javascript
vue与django集成打包的实现方法
Nov 11 Javascript
ElementUI实现el-form表单重置功能按钮
Jul 21 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 设计模式之 单例模式
2008/12/19 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
PHP时间处理类操作示例
2018/09/05 PHP
mysqli扩展无法在PHP7下升级问题的解决
2019/09/10 PHP
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
详解JavaScript中的客户端消息框架设计原理
2015/06/24 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
Eclipse引入jquery报错如何解决
2015/12/01 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
js实现鼠标拖拽多选功能示例
2017/08/01 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
Python 迭代器工具包【推荐】
2016/05/06 Python
Python优先队列实现方法示例
2017/09/21 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
Python实现翻转数组功能示例
2018/01/12 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
用Python画小女孩放风筝的示例
2019/11/23 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
TensorFlow保存TensorBoard图像操作
2020/06/23 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
职业教育毕业生求职信
2013/11/09 职场文书
商务助理岗位职责
2013/11/13 职场文书
模具毕业生推荐信
2014/02/15 职场文书
《三峡》教学反思
2014/03/01 职场文书
人力资源管理系自荐信
2014/05/31 职场文书
保险专业求职信
2014/07/07 职场文书
党员教师四风问题对照检查材料
2014/09/26 职场文书
党的群众路线学习笔记
2014/11/06 职场文书
教师思想工作总结2015
2015/05/13 职场文书
建国大业电影观后感
2015/06/01 职场文书