vuejs怎么用ajax

方法:1、安装并引入axios,用“axios([option])”、“axios.get(url[,…])”等方法发送请求。2、安装并引入vue-resource,用“this.$http.jsonp(url,[…])”发送请求。

vuejs怎么用ajax

本教程操作环境:windows7系统、vue2.9.6版,DELL G3电脑。

vue本身不支持发送AJAX请求,需要使用vue-resource、axios等插件实现。

axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行更新和维护。

vuejs使用ajax的方法

立即学习“前端免费学习笔记(深入)”;

1、安装axios并引入

1)npm的方式:  npm install axios -S

2)bower的方式: bower install axios

3)cdn的方式:

2、基本用法

1)axios([options])

nbsp;html>        axios发送ajax请求基本用法            
            
     new Vue({ el:"#app", methods:{ send(){ axios({ method:'get', url:'user.json' }).then(function(res){ console.log(res.data.name); }); } } });

登录后复制

结果
2)axios.get(url[,options]);

传参方式:
(1)通过url传参axios(‘url?key=value&key1=val2’).then();
(2)通过params选项传参 axios(‘url’,{params:{key:value}}).then();

3)axios.post(url,data,[options]);

axios默认发送数据时,数据格式是Request Payload,并非常用的Form Data格式,
所以参数必须要以键值对形式传递,不能以json形式传。

传参方式: 

(1)自己拼接为键值对

axios.post(‘url’,’key=value&key1=value1’).then();

登录后复制

(2)使用transformRequest,在请求发送前将请求数据进行转换

axios.post('url',data,{                        transformRequest:[                                function(data){                                    let params = '';                                    for(let index in data){                                        params +=index+'='+data[index]+'&';                                    }                                    return params;                                }                        ]                    }).then(function(res){                        console.log(res.data)                    });

登录后复制

(3)如果使用模块化开发,可以使用qs模块进行转换

axios本身并不支持发送跨域的请求,没有提供相应的API,作者也暂没计划在axios添加支持发送跨域请求,
所以只能使用第三方库

跨域请求(使用vue-resource发送跨域请求)

1、使用vue-resource发送跨域请求步骤

安装vue-resource并引入:npm install vue-resource -S基本用法:

使用this.$http.jsonp(url,[ops]) 发送请求

2、基本使用演示(360搜索)

1)打开360搜索,然后输入字符’a’会有一些搜索选项自动提示,如图
360搜索
2)复制链接
https://sug.so.360.cn/suggest?callback=suggest_so&encodein=utf-8&encodeout=utf-8&format=json&fields=word&word=a
3)代码演示

nbsp;html>        使用vue-resource发送跨域请求                
            
     var vm = new Vue({ el:"#app", methods:{ sendJsonp:function(){ this.$http.jsonp('https://sug.so.360.cn/suggest',{ params:{ word:'a' } }).then(function(res){ console.log(res.data); }); } } });

登录后复制

4)结果 

360搜索结果

3、基本例子演示(百度搜索)

1)要求同360搜索的要求 

百度搜索
2)复制链接
=1526436420943”>https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&json=1&p=3&sid=1467_21117_20927&req=2&csor=1&cb=jQuery1102060305102784707_1526436420940&=1526436420943
3)代码演示(注意)–第一次尝试
如果按照上述代码的方式去写,那结果会报错

nbsp;html>        使用vue-resource发送跨域请求                
            
     var vm = new Vue({ el:"#app", methods:{ sendJsonp:function(){ this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{ params:{ wd:'a' } }).then(function(res){ console.log(res.data); }); } } });

登录后复制

结果会报错 

百度搜过结果报错
那这是为什么呢?

之前360搜索jsonp回调的参数名是callback,而百度使用的参数名为cb,所以会报错

修改过后的代码如下

nbsp;html>        使用vue-resource发送跨域请求                
            
     var vm = new Vue({ el:"#app", methods:{ sendJsonp:function(){ this.$http.jsonp('https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su',{ params:{ wd:'a' }, jsonp:'cb' }).then(function(res){ console.log(res.data); }); } } });

登录后复制

4)结果 

百度搜索结果

4、百度搜索案例演示

nbsp;html>        百度搜索列表            .current{            background-color:#CCCCCC;        }                        window.onload=function() {        new Vue({            el: "#app",            data: {                keyword: '',                myData:[],                now: -1            },            methods: {                getData(e) {                    //如果按方向键上、下,则不发请求                    if (e.keyCode == 38 || e.keyCode == 40)                        return;                    this.$http.jsonp(                    'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su', {                        params: {                            wd: this.keyword                        },                        jsonp: 'cb'                    }).then(function (res) {                        console.log(res.data.s);                        this.myData = res.data.s;                    });                },                changeDown() {                    this.now++;                    this.keyword = this.myData[this.now];                    if (this.now == this.myData.length) {                        this.now = -1;                    }                },                changeUp() {                    this.now--;                    this.keyword = this.myData[this.now];                    if (this.now == -2) {                        this.now = this.myData.length - 1;                    }                }            }        });    }        
                
                
  •                 {{val}}            
  •         
    

登录后复制

相关推荐:《vue.js教程》

以上就是vuejs怎么用ajax的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2946827.html

(0)
上一篇 2025年3月11日 22:49:27
下一篇 2025年3月11日 22:49:39

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • angularjs和vuejs的区别是什么

    区别:1、angularjs是通过“脏值检测”的方式比对数据是否有变更,实现双向数据绑定;而vue是采用“数据劫持”结合“发布者-订阅者模式”的方式实现双向数据绑定。2、vue指令使用“v-”操作符,angularjs的指令使用“ng-”。…

    2025年3月11日
    200
  • 怎么看自己的vuejs版本号

    查看vuejs版本号的方法:1、打开cmd命令窗口,执行“vue -V”命令即可查看。2、进入vue项目,打开“vue.js”文件,直接搜“Vue.version”项,该项的值就是版本号。 本教程操作环境:windows7系统、vue2.9…

    2025年3月11日 编程技术
    200
  • vuejs可做网站吗

    使用vuejs可以开发网站,其优势为:1、用户可以很容易地将Vue.js添加到任何Web项目中;2、灵活性高;3、体积小,下载时间短,网站速度快;4、当向用户展示产品时,可快速获得反馈和评论,进而改进项目;5、缩短营销时间;6、易于集成等。…

    2025年3月11日
    200
  • vuejs能做什么

    vuejs能做的事:1、能让基于网页的前端应用程序开发起来更加方便;2、可以简单写单个页面,也可以写一个大的前端系统;3、可以做从简单到复杂的前端单页应用,随处可见的Web前端都可以用Vue来开发。 本教程操作环境:windows7系统、v…

    2025年3月11日
    200
  • vuejs中跳转如何传参

    vue跳转传参的方法:1、通过router-link标签的params或query属性进行跳转传参;2、通过“this.$router.push({name:’路由命名’,params:{参数名:参数值..}})”语…

    2025年3月11日
    200
  • vuejs如何自定义属性

    在vuejs中,可以利用“v-bind”指令来自定义属性,该指令主要用于属性绑定,语法“v-bind:自定义属性名=”属性值””;也可使用“v-bind”指令的简写方式“:属性名=”属性值””…

    2025年3月11日
    200
  • vuejs脚手架是干嘛用的

    vuejs脚手架是用来快速搭建项目的,可自动一键生成“vue+webpack”的项目模板,并安装好依赖库;使用脚手架可以免去用户手动安装各种插件,寻找各种cdn并一个个引入的麻烦。 本教程操作环境:windows7系统、vue2.9.6版,…

    2025年3月11日
    200
  • vuejs需要js基础吗

    vuejs需要js基础。Vue是一套用于构建用户界面的渐进式JavaScript框架,在学习Vue.js之前,需要具有基础的前端知识,要先学习好HTML,CSS,Javascript(js、ES6、ES5)等知识。 本教程操作环境:wind…

    2025年3月11日
    200
  • 前端vuejs是什么语言

    vuejs不是一门语言,而是一款流行的开源JavaScript前端框架,一个用于创建用户界面的渐进式框架,旨在更好地组织与简化Web开发。Vue的核心库只关注视图层,并且非常容易学习,也非常容易与其他库或已有项目整合。 本教程操作环境:wi…

    2025年3月11日
    200
  • vuejs框架路由的怎么传值

    vuejs框架路由传值的方法:1、直接调用“$router.push(…)”语句实现携带参数进行跳转传值;2、利用axios传值,可调用“this.$axios.get(…)”语句来传值。 本教程操作环境:windo…

    2025年3月11日
    200

发表回复

登录后才能评论