day 74 vue 2 axios数据请求 以及组件的学习

时间:2021-12-12 13:32:16

前情提要: 

    vue 学习二:

    

    一:  通过axios实现数据请求

      1:json数据语法

        

json数据对象类似于JavaScript中的对象,但是它的键对应的值里面是没有函数方法的,值可以是普通变量,不支持undefined,值还可以是数组或者json对象。

 

// json数据的对象格式:
{
   "name":"tom",
   "age":18
}

// json数据的数组格式:
["tom",18,"programmer"]

 

 

 

复杂的json格式数据可以包含对象和数组的写法。

 

{
 "name":"小明",
 "age":200,
 "fav":["code","eat","swim","read"],
 "son":{
   "name":"小小明",
   "age":100,
   "lve":["code","eat"],
}
}

// 数组结构也可以作为json传输数据。

 

json数据可以保存在.json文件中,一般里面就只有一个json对象。

day 74 vue 2 axios数据请求   以及组件的学习

        2:js 中提供的json 语法转化,

day 74 vue 2 axios数据请求   以及组件的学习

 

       3:ajax  介绍

    

ajax,一般中文称之为:"阿贾克斯",是英文 “Async Javascript And Xml”的简写,译作:异步js和xml数据传输数据。

ajax的作用: ajax可以让js代替浏览器向后端程序发送http请求,与后端通信,在用户不知道的情况下操作数据和信息,从而实现页面局部刷新数据/无刷新更新数据。

所以开发中ajax是很常用的技术,主要用于操作后端提供的数据接口,从而实现网站的前后端分离

ajax技术的原理是实例化js的XMLHttpRequest对象,使用此对象提供的内置方法就可以与后端进行数据通信。

       3.1:ajax的使用

      

ajax的使用必须与服务端程序配合使用,但是目前我们先学习ajax的使用,所以暂时先不涉及到服务端python代码的编写。因此,我们可以使用别人写好的数据接口进行调用。

jQuery将ajax封装成了一个函数$.ajax(),我们可以直接用这个函数来执行ajax请求。

接口 地址
天气接口 http://wthrcdn.etouch.cn/weather_mini?city=城市名称
音乐接口搜索 http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query=歌曲标题
音乐信息接口 http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.song.play&songid=音乐ID

 

编写代码获取接口提供的数据:

jQ版本

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <script src="js/jquery-1.12.4.js"></script>
   <script>
   $(function(){
       $("#btn").on("click",function(){
           $.ajax({
               // 后端程序的url地址
               url: 'http://wthrcdn.etouch.cn/weather_mini',
               // 也可以使用method,提交数据的方式,默认是'GET',常用的还有'POST'
               type: 'get',
               dataType: 'json',  // 返回的数据格式,常用的有是'json','html',"jsonp"
               data:{ // 设置发送给服务器的数据,如果是get请求,也可以写在url地址的?后面
                   "city":'北京'
              }
          })
          .done(function(resp) {     // 请求成功以后的操作
               console.log(resp);
          })
          .fail(function(error) {    // 请求失败以后的操作
               console.log(error);
          });
      });
  })
   </script>
</head>
<body>
<button id="btn">点击获取数据</button>
</body>
</html>

vue版本:

<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>Title</title>
   <script src="js/vue.js"></script>
   <script src="js/axios.js"></script>
</head>
<body>
   <div id="app">
       <input type="text" v-model="city">
       <button @click="get_weather">点击获取天气</button>
   </div>
   <script>
       let vm = new Vue({
           el:"#app",
           data:{
               city:"",
          },
           methods:{
               get_weather(){
                   // http://wthrcdn.etouch.cn/weather_mini?city=城市名称
                   axios.get("http://wthrcdn.etouch.cn/weather_mini?city="+this.city)
                      .then(response=>{
                           console.log(response);

                      }).catch(error=>{
                           console.log(error.response)
                  });
              }
          }
      })
   </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="https://cdn.bootcss.com/axios/0.19.0-beta.1/axios.js"></script>
<script src="https://cdn.bootcss.com/vue/2.6.10/vue.min.js"></script> <title>Title</title>
</head>
<body>
<div id="app">
<input type="text" v-model="city">
<button @click="get_wea()">点击查看城市</button>
</div>
</body> <script> let vm =new Vue({
el:'#app',
data:{
city:'广东' },
methods:{
get_wea(){
axios.get("http://wthrcdn.etouch.cn/weather_mini?city="+this.city)
.then(response=>{
console.log(response); }).catch(error=>{
console.log(error.response) }) } } }) </script>
</html>

 

 day 74 vue 2 axios数据请求   以及组件的学习

 

        4:同源策略

       4:1 什么是同源策略

同源策略,是浏览器为了保护用户信息安全的一种安全机制。所谓的同源就是指代通信的两个地址(例如服务端接口地址与浏览器客户端页面地址)之间比较,是否协议、域名(IP)和端口相同。不同源的客户端脚本[javascript]在没有明确授权的情况下,没有权限读写对方信息。

ajax本质上还是javascript,是运行在浏览器中的脚本语言,所以会被受到浏览器的同源策略所限制。

day 74 vue 2 axios数据请求   以及组件的学习

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="js/vue.js"></script>
<script src="js/axios.js"></script>
</head>
<body>
<div id="app">
<button @click="get_music">点击获取天气</button>
</div>
<script>
let vm = new Vue({
el:"#app",
data:{},
methods:{
get_music(){
axios.get("http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query=我的中国心")
.then(response=>{
console.log(response); }).catch(error=>{
console.log(error.response)
});
}
}
})
</script>
</body>
</html>

        4:2当不是同源时会被浏览器拦截,报如下错.

    

Access to XMLHttpRequest at 'http://tingapi.ting.baidu.com/v1/restserver/ting?method=baidu.ting.search.catalogSug&query=%E6%88%91%E7%9A%84%E4%B8%AD%E5%9B%BD%E5%BF%83' from origin 'http://localhost:63342' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

      报错:  

  day 74 vue 2 axios数据请求   以及组件的学习

 

           4:3   ajax跨域之方案cors

          day 74 vue 2 axios数据请求   以及组件的学习

          4:4示意图

day 74 vue 2 axios数据请求   以及组件的学习

      4:5: 同源策略总结

day 74 vue 2 axios数据请求   以及组件的学习

 

    二:       组件化开发

1:组件的概念

day 74 vue 2 axios数据请求   以及组件的学习

 

  2:全局组件

<div id="app">
<addnum></addnum>
<addnum></addnum>
<addnum></addnum>
<addnum></addnum>
<addnum></addnum>
</div> <script>
Vue.component("addnum",{
template:'<div><input type="text" v-model="num"><button @click="num+=1">点击</button></div>',
data: function(){
// 写在这里的数据只有当前组件可以使用
return {
num:,
}
}
}); var vm = new Vue({
el:"#app",
// 这里写的数据是全局公用的,整个文件共享
data:{ }
})
</script>

 

day 74 vue 2 axios数据请求 以及组件的学习的更多相关文章

  1. vue 使用axios 数据请求第三方插件的使用

    axios 基于http客户端的promise,面向浏览器和nodejs 特色 浏览器端发起XMLHttpRequests请求 node端发起http请求 支持Promise API 监听请求和返回 ...

  2. VUE - 使用axios数据请求时数据绑定时 报错 TypeError&colon; Cannot set property &&num;39&semi;xxxx&&num;39&semi; of undefined 的解决办法

     created() {     var that=this     axios.get('http://jsonplaceholder.typicode.com/todos')     .then( ...

  3. Vue 使用 axios post请求后台数据时 404

    今天遇到Vue 使用 axios post请求后台数据时 404 使用postman 就能获取到 网上找了大半天 终于找到了解决方法,传送门:https://www.jianshu.com/p/b10 ...

  4. vue axios数据请求get、post方法的使用

    我们常用的有get方法以及post方法,下面简单的介绍一下这两种请求方法 vue中使用axios方法我们先安装axios这个方法 npm install --save axios 安装之后采用按需引入 ...

  5. 02 Vue之vue对象属性功能&amp&semi;axios数据请求实现

    1.过滤器的声明和使用 过滤器,就是vue允许开发者自定义的文本格式化函数,可以使用在两个地方:输出内容和操作数据中. 定义过滤器的方式有两种. 1 使用Vue.filter()进行全局定义 2 在v ...

  6. vue axios 数据请求实现

    1.安装nginx npm install axios --save-dev cnpm install axios --save-dev 使用淘宝镜像 保存依赖文件到本地 装好了.packjson.j ...

  7. vue使用axios发送请求,都会发送两次请求

    vue 使用axios,每次的请求都会发送两次,第一次的请求头为options CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sha ...

  8. 运行命令区分webpack环境,以及axios数据请求的封装

    在开发环境和线上环境时,由于环境的不同,有时候需要修改一定的代码,可以通过配置webpack环境来减少对代码的修改:另外,有时候去看别人的代码,你可能都找不到他的数据请求在什么位置,最近在做一个vue ...

  9. vue中axios 配置请求拦截功能 及请求方式如何封装

    main.js 中: import axios from '................/axios' axios.js 中: //axios.js import Vue from 'vue' i ...

随机推荐

  1. Mysql 声明变量

    Mysql 声明变量 Mysql中声明变量有两种方式 第一种: set @num=1; 或set @num:=1; //这里要使用变量来保存数据,直接使用@num变量 第二种: select @num ...

  2. (1)Underscore&period;js入门

    1. Underscore对象封装 Underscore并没有在原生的JavaScript对象原型中进行扩展,而是像jQuery一样,将数据封装在一个自定义对象中(下文中称"Undersco ...

  3. js实现input输入框只能输入数字的功能(完美测试通过)

    <input type="text" style="ime-mode:disabled;" onpaste="return false;&quo ...

  4. AngularJS 中文资料&plus;工具&plus;库&plus;Demo 大搜集

    中文学习资料: 中文资料且成系统的就这么多,优酷上有个中文视频. http://www.cnblogs.com/lcllao/archive/2012/10/18/2728787.html   翻译的 ...

  5. asp&period;net mvc5 设置Area下的为启动页

    只需修改App_Start文件夹下RouteConfig中RegisterRoutes方法 public static void RegisterRoutes(RouteCollection rout ...

  6. noip普及组2005 采药

    采药 描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:&quot ...

  7. SpringBoot学习笔记&lt&semi;二&gt&semi;注解

    此篇为项目作结之笔记,关于注解. 项目启动入口@SpringBootApplication[必选]  @ServletComponentScan[可选] 注解后: Servlet.Filter.Lis ...

  8. centos6&period;6安装hadoop-2&period;5&period;0(一、本地模式安装)

    操作系统:centos6.6(一台服务器) 环境:selinux disabled:iptables off:java 1.8.0_131 安装包:hadoop-2.5.0.tar.gz hadoop ...

  9. ML(5)——神经网络2(BP反向传播)

    上一章的神经网络实际上是前馈神经网络(feedforward neural network),也叫多层感知机(multilayer perceptron,MLP).具体来说,每层神经元与下一层神经元全 ...

  10. Error updating database&period; Cause&colon; java&period;lang&period;IllegalArgumentException&colon; invalid comparison&colon; java&period;util&period;Date and java&period;lang&period;String异常处理

    问题原因:Mybatis中对于时间参数进行比较时的一个BUG. 如果拿传入的时间类型参数与空字符串‘‘进行对比判断则会引发异常.,所以应该去掉该判断, 只保留非空判断就正常了 <if test= ...