LOGO 首页 OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 技术文档 其他文档  
 
网站管理员

【JavaScript】原生ajax方法封装

admin
2026年8月15日 10:48 本文热度 51

/**

 * @function ajax request

 * @fields ajaxName:请求名称,method:请求方法,headers:setRequestHeader自定义部分,url:接口地址,async:是否异步请求,withCredentials:是否支持跨域发送cookie,dataType:数据类型 ,data:post请求参数

 * @param data:{ajaxName:"ajaxNameString",headers:{},method:"GET/POST",url:"",async:true/false,withCredentials:true/false,dataType:"json",data:""}

 * @result ajaxName.responseText

 */

function ajaxRequest (data, callback) {

    data = data || {}

    data.dataType = data.dataType || 'json'

    var sendParams = null

    var headers = data.headers || {}

    var ajax = data.ajaxName

    // 新建请求

    if (window.XMLHttpRequest) {

        ajax = new XMLHttpRequest()

    } else {

        ajax = new ActiveXObject('Microsoft.XMLHTTP')

    }

    // 打开请求

    ajax.open(data.method.toUpperCase(), data.url, data.async)

    // 是否支持跨域发送cookie

    ajax.withCredentials = data.withCredentials

    ajax.setRequestHeader("Content-type", data.contentType || "application/x-www-form-urlencoded")

    // POST请求设置

    if (data.method == 'POST') {

        for (var i in headers) {

            ajax.setRequestHeader(i, headers[i])

        }

        if (data.data) {

            sendParams = data.data

        }

    }

    // 发送请求

    ajax.send(sendParams ? sendParams : null)

    // 注册事件

    ajax.onreadystatechange = function () {

        if (window.location.origin + '/login/index' === ajax.responseURL) {

            window.location.reload()

            window.location.href = window.location.origin + '/login/index'

            return

        }

        callback(ajax)

    }

}

/**

 * GET

 * @param ajaxName 请求名称

 * @param requestUrl 请求接口地址

 * @param async 是否异步请求

 * @param callBack 回调函数

 * @param contentType 请求类型

 */

function ajaxGetData (ajaxName, requestUrl, async, callBack, contentType) {

    ajaxRequest({

        ajaxName: ajaxName,

        contentType: contentType || "application/json;charset=utf-8",

        method: "GET",

        url: requestUrl,

        async: async,

        cache: false,

        withCredentials: true,

        dataType: "json"

    }, function callback (ajax) {

        if (ajax.status == 200 && ajax.readyState == 4) {

            callBack(ajax.responseText)

        }

    })

}

/**

 * 拼接GET请求url参数

 * @param url

 * @param params

 * @returns {string}

 */

function formateGetUrl (url, params) {

    var resultParams = ''

    for (var key in params) {

        resultParams = resultParams + '&' + key + '=' + params[key]

    }

    return url + '?' + resultParams.substr(1)

}

/**

 * POST

 * @param ajaxName 请求名称

 * @param requestUrl 请求接口地址

 * @param async 是否异步请求

 * @param callBack 回调函数

 * @param contentType 请求类型

 */

function ajaxPostData (ajaxName, requestUrl, params, async, callBack, contentType) {

    var resultParams = ''

    if (!contentType || contentType === "application/x-www-form-urlencoded;charset=utf-8") {

        for (var key in params) {

            resultParams = resultParams + '&' + key + '=' + encodeURIComponent(params[key])

        }

    } else {

        resultParams = params && JSON.stringify(params)

    }

    ajaxRequest({

        ajaxName: ajaxName,

        headers: {},

        contentType: contentType || "application/x-www-form-urlencoded;charset=utf-8",

        method: "POST",

        dataType: "json",

        url: requestUrl,

        processData: true,

        async: async,

        data: resultParams

    }, function callback (ajax) {

        if (ajax.status == 200 && ajax.readyState == 4) {

            callBack(ajax.responseText)

        }

    })

}


该文章在 2026/8/17 17:49:41 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2026 ClickSun All Rights Reserved  粤ICP备13012886号-2  粤公网安备44030602007207号