那些年遇到的ajax相关问题

来源:互联网 发布:php curl 查看请求头 编辑:程序博客网 时间:2024/05/22 16:08

前端开发工作中,最常用到的数据交互技术应该就是ajax了,无论是原生js的,jquery框架,还是mui,angular,vue等相关的ajax方法,都是前端开发人员应该熟练掌握的技术,下面就工作过程中用到的一些ajax方法与大家分享一二,欢迎探讨:

1.最长使用的应该是jQuery封装的ajax方法,废话少说,上菜:

    $.ajax({

      url:"此处存放你所访问的接口",

      data:{“username”:"dawei","sexy":"male"},   //如使用post方式提交数据,此处多用键值对方式传值,

      async:true,  //默认为true,表示异步,修改为false则为同步,

      type:“GET/POST”,    //定义请求方式,

     dataType:“text/html/javascript/json/xml”,//数据格式,若为跨域访问,且后台接口数据为json格式,设置好了回调,则此处设置jsonp,

     success:function(data){

             //data即为服务器返回的接口数据,一般情况下若为数组或对象,配合$.each进行循环DOM操作

      },

     error:function(){

         //异常处理

      }

   })

其他的直接整理了,上图:




2.mui中遇到的ajax怎么处理呢?

这里需要知道两个东西,首页mui的ajax其实是源于jquery,并且属于H5+api使用,所以书写的时候最好加上mui.plusReady(function(){    });其次其对比jquery的ajax方法格式上有点区别,上图:



3. Angular中的ajax技术

    Angular的ajax需要依赖$http服务,所以需要再控制器中注入$http,1.4版本以上推荐用新方法,如:

    var app=angular.module("myapp",[]);
app.controller("ct",function($scope,$http){
$http({method: 'GET',url: 'cc.php'}).then(function(response){
  $scope.info=response.data.data
  console.log(response.data)
})
})

//或者


var app=angular.module("myapp",[]);
app.controller("ct",function($scope,$http){
$http.get("cc.php").then(function(response){
  $scope.info=response.data.data
  console.log(response.data)
})
})


//或者

var app=angular.module("myapp",[]);
app.controller("ct",function($scope,$http){
$http.post("cc.php").then(function(response){
  $scope.info=response.data.data
  console.log(response.data)
})
})

//或者

var app=angular.module("myapp",[]);
app.controller("ct",function($scope,$http){
$http.jsonp("cc.php?callback=JSON_CALLBACK").then(function(response){
  $scope.info=response.data.data
  console.log(response.data)
})
})


4. vue里面的ajax技术是什么样子的呢?

   1.依靠vue-resourse

    确保引入架包

    <script type="text/javascript" src="js/vue.min.js"></script>
    <script type="text/javascript" src="js/vue-resource.js"></script>

   核心代码演示:

   new Vue({
    el:".list",
    data:{
    arr:[]
    },
    mounted: function() {
this.$nextTick(function(){
this.ajax();
})
},
    methods:{
    ajax:function(){
    var _this=this;
    this.$http.get("zz.php").then(function(data){
    console.log(data.data.T1348649580692)
    })
    }
    }
    })

   2.依靠vue-axios

      同样要引入架包:
<script src="https://cdn.bootcss.com/vue/2.3.4/vue.min.js"></script>

          <script src="https://cdn.bootcss.com/axios/0.16.2/axios.min.js"></script>

     核心代码:

    new Vue({
el:"#app",
data:{
mydata:''
},
methods:{
getdata:function(){

//关键代码
axios.get("cc.php').then(function(res){
console.log(res.data)
})

//或者

axios({
url:'cc.php'
}).then(function(res){
console.log(res.data)
})
                
                
                //或者
                
                
axios.post('cc.php',{
name:'dawei'
}).then(function(res){
console.log(res.data);
})
                
                
                //或者
                
                
axios({
url:'cc.php',
params:{
name:'dawei'
}
}).then(function(res){
console.log(res.data);
})
}
}
})


好啦,先说这些,涉及到跨域问题的解决方案,咱们下次再专门讨论


原创粉丝点击