AJAX函数封装

1.先说明ajax代码是放在html里,但是不能直接点html文件运行,应该放在服务器中运行,否则会一直报错“net::ERR_FAILED”;正确的方式应该是放在服务器中运行,本人使用的django框架。

 django视图代码

路由代码

 2.AJAX代码 html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>QhAjax</title>
</head>
<body>
<script type="text/javascript">
    function qh_ajax(qh_options) {
        // 设置参数的默认值
        var qh_defaults = {
            qh_method: 'get',
            qh_url: '',
            qh_data: {},
            qh_header: {
                'Content-Type': 'application/x-www-from-urlencoded'
            },
            qh_success: function () {
            },
            qh_error: function () {
            },
        };
        // 使用传递qh_options参数属性 覆盖qh_defaults参数默认的属性
        Object.assign(qh_defaults, qh_options);
        //创建AJAX对象
        var qh_xhr = new XMLHttpRequest();
        // 拼接请求参数的变量
        var qh_params = '';
        for (var qh_row in qh_defaults.qh_data) {
            //拼接转换字符串请求参数
            qh_params += qh_row + '=' + qh_defaults.qh_data[qh_row] + '&';
        }
        // 截取掉最后的&符号
        qh_params = qh_params.substr(0, qh_params.length - 1);
        console.log(qh_params);
        // 如果是get请求,先拼接url参数
        if (qh_defaults.qh_method == 'get') {
            qh_defaults.qh_url = qh_options.qh_url + '?' + qh_params;
            console.log(qh_defaults.qh_url)
        }
        // 配置参数
        qh_xhr.open(qh_defaults.qh_method, qh_defaults.qh_url);
        // 发送post请求
        if (qh_defaults.qh_method == 'post') {
            var qh_ContentType = qh_defaults.qh_header['Content-Type'];
            // 如果是post请求,必须设置这个请求头参数类型
            qh_xhr.setRequestHeader('Content-Type', qh_ContentType);
            // post如果是json个格式参数
            if (qh_ContentType == 'application/json') {
                var qh_json = JSON.stringify(qh_defaults.qh_data)
                qh_xhr.send(qh_json);
                // json以外的参数
            } else {
                qh_xhr.send(qh_params);
            }
            // 发送get请求
        } else {
            qh_xhr.send();
        }
        //监听XHR对象下面的onload事件
        // 当xhr对象接收完响应数据后触发
        qh_xhr.onload = function () {
            // qh_xhr.getResponseHeader 获取响应头信息
            var qh_contenttype = qh_xhr.getResponseHeader('Content-Type');
            console.log(qh_contenttype);
            var qh_resonseTest = qh_xhr.responseText;
            // 如果请求响应回来的数据是json格式,则需要转换为json对象
            if (qh_resonseTest.includes('application/json')) {
                qh_resonseTest = JSON.parse(qh_resonseTest)
            }
            // 请求成功调用的函数
            if (qh_xhr.status == 200) {
                qh_defaults.qh_success(qh_resonseTest, qh_xhr);
            } else {
                qh_defaults.qh_error(qh_resonseTest, qh_xhr)
            }
        }
    }

    qh_ajax({
        qh_method: 'post',
        qh_url: 'http://127.0.0.1:8000/QhZhuCeL001/qhajaxjson/',
        qh_data: {
            qh_name: 'quehui',
            age: 18
        },
        qh_header: {
            'Content-Type': 'application/json'
        },
        qh_success: function (qh_data, qh_xhr) {
            console.log(qh_data);
            console.log(qh_xhr);
        },
        qh_error: function (qh_data, qh_xhr) {
            console.log(qh_data);
            console.log(qh_xhr);
        }
    })
</script>

{#/*#}
{#请求参数:#}
{#1.请求参数的位置问题#}
{#    将请求参数传递到Ajax函数内部,在函数内部根据请求方式的不同将请求参数放置在不同的位置;#}
{#    GET请求放在地址后面#}
{#    POST请求放在send方法中#}
{#2.请求参数格式的问题#}
{#    application/x-www-form-urlencoded#}
{#        参数名称 = 参数值 & 参数名称 = 参数值#}
{#    application/json#}
{#        {name:'',age:''}#}
{#    传递对象数据类型对于函数调用者更加友好#}
{#    在函数内部对象数据类型转换位字符串类型更加方便#}
{#*/#}
</body>
</html>

运行效果:

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值