AJAX封装与调用

AJAX封装

function ajax(obj){
                //1.创建ajax对象
                var xhr
                if(window.XMLHttpRequest){           支持此对象
                    xhr=new XMLHttpRequest()                    //IE7以上浏览器
                }else{
                    xhr=new ActiveXObject("Microsoft.XMLHTTP")  //只有IE6支持此对象
                }
                //2.打开请求
                //第一个参数表示请求方式,值为get/post,是字符串
                //第二个参数表示请求的地址
                //第三个参数是布尔值,默认是true表示异步,false表示同步
                xhr.open(obj.type,obj.url,obj.async)
                //3.判断请求方式get/post,发送数据(post方式必须发送请求头)
                if(obj.type.toLowerCase()=="get"){
                    xhr.send()
                }else if(obj.type.toLowerCase()=="post"){
                    xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")      //设置请求头
                    xhr.send(toUrl(obj.data))//name=1&name2=2
                }
                
                //4.操作返回的数据
                xhr.onreadystatechange=function(){
                    if(xhr.readyState==4 && xhr.status==200){
                        //1.readyState属性:ajax工作状态
                        //2.每当readyState的值发生改变时,就会触发         onreadystatechange事件
                        //存有XMLHttpRequest的状态.从0-4发生变化
                        //0:请求未初始化
                        //1:服务器连接已建立
                        //2:请求已接收
                        //3:请求处理中
                        //4:请求已完成,且响应已就绪

                        //http状态码
                        //200代表请求成功
                        //403禁止访问
                        //404文件未找到
                        //500服务器错误
                        //对responseText进行json转化
                        var data=JSON.parse(xhr.responseText)
                        //把转化好的数据当做参数返回给obj.success函数
                        obj.success(data)
                    }
                }
                
                //对obj.data进行转化,把对象转化成url形式
                function toUrl(obj){
                    var arr=[]
                    for(var i in obj){
                        arr.push(i+"="+obj[i])
                    }
                    return arr.join("&")
                }
            }

ajax调用

ajax({
                type:"post或者get",
                url:"地址",
                //加post的话用到data
                //get的话直接用&拼接  
                data:{
                        key:"c0bf48603646fc9a7c8"
                    },
                async:true,
                success:function(res){      
                    console.log(res);
                }
            })

直接返回调用的对象
请求方式type用get/post
get方式直接拼接key必选项
post方式直接传入data对象再设置key必选项

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个基于axios封装Ajax调用数据接口的示例: ```javascript import axios from 'axios'; const request = axios.create({ baseURL: 'https://api.example.com', // 接口的基础路径 timeout: 5000, // 请求超时时间 }); // 请求拦截器 request.interceptors.request.use(config => { // 在发送请求之前做些什么,比如添加token config.headers.Authorization = 'Bearer ' + getToken(); return config; }, error => { // 对请求错误做些什么 console.error('请求拦截器错误:', error); return Promise.reject(error); }); // 响应拦截器 request.interceptors.response.use(response => { // 对响应数据做些什么,比如处理错误状态码 if (response.status !== 200) { console.error('响应状态码错误:', response.status); return Promise.reject(new Error('响应状态码错误')); } return response.data; }, error => { // 对响应错误做些什么 console.error('响应拦截器错误:', error); return Promise.reject(error); }); export default request; // 调用接口 import request from '@/utils/request'; request({ method: 'get', url: '/api/user', params: { id: 1 } }).then(response => { console.log(response); }).catch(error => { console.error(error); }); ``` 以上代码中,我们通过axios.create()方法创建了一个axios实例,然后定义了请求拦截器和响应拦截器,在发送请求之前可以在请求头中添加token,对响应数据也可以进行一些处理。最后我们导出了这个axios实例,并在调用接口时使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值