Javascript 原生封装Ajax 案例


prtyaa
prtyaa 2023-12-26 18:23:21 50633
分类专栏: 资讯

废话不多说 直接上代码:

/**
 * 将对象参数转换为字符串 
 * 配合下面的$ajax方法使用
 * 解决data对象的问题
 * @param {*} obj 
 * @returns string
 */
function queryString(obj) {
    let str = '';
    for (let key in obj) {
        str = key + '=' + obj[key] + '&'
    }

    return str.substring(0, str.length - 1);
}

/**
 * 封装ajax
 * method 请求方式 默认GET
 * url 请求地址 
 * data 是否需要提交参数 以对象的方式传入 通过queryString(obj)方法将对象转换为拼接字符串
 * success 请求数据成功执行的回调函数
 * error  请求数据失败执行的回调函数
 * @param {*} param0 
 */
function $ajax({method = "get",url,data,success,error}) {
    let xmlhttp = null;
    try {
        xmlhttp = new window.XMLHttpRequest();
    } catch (error) {
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }

    if (data) {
        data = queryString(data);
    }
    //提交的是get请求并且data需要传入参数
    if (method == 'get' && data) {
        url += '?' + data;
    }
    xmlhttp.open(method, url, true);
    if (method == 'get') {
        xmlhttp.send();
    } else {
        //post提交必须设置请求头       
        xmlhttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
        xmlhttp.send(data);
    }
    xmlhttp.onreadystatechange = function () {
        if (xmlhttp.readyState == 4) {
            if (xmlhttp.status == 200) {
                if (success) {
                    success(xmlhttp.responseText);
                }
            } else {
                if (error) {
                    error(`Error:${xmlhttp.status}`);
                }
            }
        }
    }
}


/**
 * 调用ajax
 */
$ajax({
    method:'POST', //请求方式 默认为get请求  可以不写
    url:'', //请求地址
    //是否需要参数 没有  可以为空
    data:{
        username:'admin',
        password:'123'
    },
    //数据成功执行的回调函数
    success:function(result){

    },
    //数据失败执行的回调函数
    error:function(msg){
        alert(msg);
    }
});

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30999
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2959
【软件正版化】软件正版化工作要点  2878
统信UOS试玩黑神话:悟空  2843
信刻光盘安全隔离与信息交换系统  2737
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1270
grub引导程序无法找到指定设备和分区  1235
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
点击报名 | 京东2025校招进校行程预告  164
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  159
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
信创开放社区邀请他人注册的具体步骤如下 15
如何玩转信创开放社区—从小白进阶到专家 15
方德桌面操作系统 14
我有15积分有什么用? 13
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!