当前位置:   article > 正文

Vue应用axios实现Ajax请求_vue3 发起ajax获得数据

vue3 发起ajax获得数据

axios是一个基于promise的HTTP客户端,它的主要特点如下:

  1. 从浏览器中创建XMLHttpRequest
  2. 从node.js发出HTTP请求
  3. 支持Promise API
  4. 拦截请求和响应
  5. 转换请求和响应数据
  6. 取消请求
  7. 自动转换JSON数据
  8. 客户端支持防止CSRF/XSRF

引入方式

使用cdn

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

或者: 

<script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>

使用npm

npm install axios

 Get请求和Post请求

 使用axios发送Get和Post请求分别有两种格式:

格式一: 

  1. //Get请求
  2. axios({
  3. method:'get', //请求方式
  4. url:'XXX.XXX', //请求路径
  5. params:{name:'蔡某坤',sex:'gay',hobby:'rap'} //发送的数据
  6. })
  7. .then(function(response){
  8. //请求成功,处理业务逻辑
  9. })
  10. .catch(function(error){
  11. //请求失败,处理业务逻辑
  12. })
  13. //Post请求
  14. axios({
  15. method:'post', //请求方式
  16. url:'XXX.XXX', //请求路径
  17. data:'name=蔡某坤 & sex=gay' //发送的数据
  18. })
  19. .then(function(response){
  20. //请求成功,处理业务逻辑
  21. })
  22. .catch(function(error){
  23. //请求失败,处理业务逻辑
  24. })

格式二:

  1. //Get请求
  2. axios.get('请求路径',{
  3. params:{ //发送的数据
  4. name:'蔡某坤',
  5. sex:'gay',
  6. hobby:'basketball'
  7. }
  8. })
  9. .then(function(response){
  10. //请求成功,处理业务逻辑
  11. })
  12. .catch(function(error){
  13. //请求失败,处理业务逻辑
  14. })
  15. //Post请求
  16. axios.post('请求路径','name=蔡某坤 & sex=gay')
  17. .then(function(response){
  18. //请求成功,处理业务逻辑
  19. })
  20. .catch(function(error){
  21. //请求失败,处理业务逻辑
  22. })

回调接收,.then方法用于处理请求成功的回调函数,.catch方法用于处理请求失败的回调函数。

这两个回调函数都有各自独立的作用域,直接在函数内部使用this并不能访问到Vue实例,这时只需要在回调函数的后面添加 .bind(this) 就能解决这个问题,或者将其内部函数改为 response => ()的格式。

使用示例:

  1. <div id="element">
  2. <p>{{name}}</p>
  3. <p>{{motto}}</p>
  4. </div>
  5. <script src="http://60.205.187.0/vue/vue.js"></script>
  6. <script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
  7. <script type="text/javascript">
  8. //创建根实例
  9. var demo = new Vue({
  10. el: '#element',
  11. data: {
  12. name: '',
  13. motto: ''
  14. },
  15. mounted: function () {
  16. axios({
  17. method: 'get',
  18. url: 'http://60.205.187.0/vue/test.php',
  19. params: { name: '蔡某坤', sex: 'gay', hobby: 'rap' }
  20. })
  21. .then(
  22. function (response) {
  23. this.name = response.data.name;
  24. this.motto = response.data.motto;
  25. }.bind(this) //如果不加.bind(this)无法访问实例的数据
  26. )
  27. .catch(function (error) {
  28. console.log(error)
  29. })
  30. // axios.post('http://60.205.187.0/vue/test.php', 'name=蔡某坤 & sex=gay')
  31. // .then(response => ( //如果不使用response=>()的方式则无法访问Vue实例
  32. // this.name = response.data.name,
  33. // this.motto = response.data.motto
  34. // ))
  35. // .catch(function (error) {
  36. // console.log(error)
  37. // })
  38. // }
  39. })
  40. </script>

 

对应的php文件:

  1. <?php
  2. header('Access-Control-Allow-Origin:*');
  3. $methodName = strtolower($_SERVER['REQUEST_METHOD']);
  4. if ($methodName == "options") {
  5. exit;
  6. }
  7. $result=( array('code'=>'1','message'=>'success','name'=>'真ikun粉丝','motto'=>'就算是全世界的人都在黑蔡某坤,我也会义无反顾地站在全世界这边') );
  8. echo json_encode($result,JSON_UNESCAPED_UNICODE);
  9. ?>
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/283560
推荐阅读
相关标签
  

闽ICP备14008679号