博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
封装一个自己的 Ajax小框架
阅读量:5815 次
发布时间:2019-06-18

本文共 3023 字,大约阅读时间需要 10 分钟。

框架代码如下:

// 使用封装方法的人只关心提供http的请求方法,url地址,数据,成功和失败的回调方法// 类的构造定义,主要职责就是新建出 XMLHttpRequest 对象var MyXMLHttpRequest = function () {    var xmlhttprequest;    if (window.XMLHttpRequest) {        xmlhttprequest = new XMLHttpRequest();        if (xmlhttprequest.overrideMimeType) {            xmlhttprequest.overrideMimeType("text/xml");        }    } else if (window.ActiveXObject) {        var activeName = ["MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];        for (var i = 0; i < activeName.length; i++) {            try {                xmlhttprequest = new ActiveXObject(activeName[i]);                break;            } catch (e) {            }        }    }    if (xmlhttprequest == undefined || xmlhttprequest == null) {        alert("XMLHttpRequest对象创建失败!");    } else {        this.xmlhttp = xmlhttprequest;    }}//用户发送请求的方法MyXMLHttpRequest.prototype.send = function (method, url, data, callback, failback) {    if (this.xmlhttp != undefined && this.xmlhttp != null) {        method = method.toUpperCase();        if (method != "GET" && method != "POST") {            alert("HTTP的请求方法必须是GET或POST");            return;        }        if (url == null || url == undefined) {            alert("HTTP的请求地址必须设置!");            return;        }        var tempxmlhttp = this.xmlhttp;        this.xmlhttp.onreadystatechange = function () {            if (tempxmlhttp.readyState == 4) {                if (tempxmlhttp.status == 200) {                    var responseText = tempxmlhttp.responseText;                    var responseXML = tempxmlhttp.responseXML;                    if (callback == undefined || callback == null) {                        alert("没有设置处理数据正确返回方法!");                        alert("返回的数据:" + responseText)                    } else {                        callback(responseText, responseXML);                    }                } else {                    if (failback == undefined || failback == null) {                        alert("没有设置处理数据正确返回的方法!");                    } else {                        failback(tempxmlhttp.status, tempxmlhttp.statusText);                    }                }            }        }        //解决缓存的转换        if (url.indexOf("?") >= 0) {            url = url + "&t=" + (new Date()).valueOf();        } else {            url = url + "?t=" + (new Date()).valueOf();        }        //解决跨域的问题        if (url.indexOf("http://") >= 0) {            url.replace("?", "&");            url = "Proxy?url=" + url;        }        this.xmlhttp.open(method, url, true);        //如果是POST方式,需要设置请求头        if (method == "POST") {            this.xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");        }        //提交请求        this.xmlhttp.send(data);    } else {        alert("XMLHttpRequest对象创建失败,无法发送数据!");    }}//放弃AJAX请求MyXMLHttpRequest.prototype.abort = function () {    this.xmlhttp.abort();}

调用方式如下:

1. 引用js

2. new 一个自定义的 XMLHttpRequest 对象
3. 使用里面的 send 方法进行数据提交
4. 构造 callback 回调处理函数,与 failback 失败的 回调函数

 

转载于:https://www.cnblogs.com/xgao/p/4156045.html

你可能感兴趣的文章
node-express项目的搭建并通过mongoose操作MongoDB实现增删改查分页排序(四)
查看>>
PIE.NET-SDK插件式二次开发文档
查看>>
如何创建Servlet
查看>>
.NET 设计规范--.NET约定、惯用法与模式-2.框架设计基础
查看>>
Linux单用户CS模型TCP通讯完全注释手册
查看>>
win7 64位+Oracle 11g 64位下使用 PL/SQL Developer 的解决办法
查看>>
to Generate Armstrong Numbers
查看>>
配置管理
查看>>
BZOJ1997:[HNOI2010]PLANAR——题解
查看>>
BZOJ1014:[JSOI2008]火星人prefix——题解
查看>>
使用Unity3D引擎开发赛车游戏
查看>>
团队第一次冲刺
查看>>
gradle 添加依赖
查看>>
JAVA格式化时间日期
查看>>
linux 常见音乐、视频播放器简介
查看>>
WebDriver 将浏览器窗口最大化
查看>>
HNUSTOJ-1600 BCD时钟
查看>>
收藏一个SVN使用总结
查看>>
HTML5新手入门指南
查看>>
递推DP URAL 1225 Flags
查看>>