摆脱jquery,用自己的JS库实现ajax功能

可以将下面的代码保存在一个文件里如:myAjax.js,以后在项目中如果觉得jquery那一套很重,就完全可以使用自己的ajax库,不用担心性能和兼容性!

/**
 * 创建ajax请求对象
 * @returns XMLHTTPREQUEST
 */
function createAjaxObj(){
    var req ;
    if(window.XMLHttpRequest){
        req=new XMLHttpRequest();
    }else{
        req=new ActiveXObject("Msxml2.XMLHTTP");
    }
    return req;
}

/**
 * 发送 ajax 请求
 * @param method  get/post
 * @param url     请求路径
 * @param params  参数列表  格式a=?&&b=?
 * @param async   true 异步 false 同步
 * @param handle200  处理成功的函数
 * @param loading    处理加载中的函数
 * @param handle404  处理找不到地址的函数
 * @param handle500  处理服务器内部出错的函数
 */
function sendAjaxReq(method,url,params,async,handle200,loading,handle404,handle500){
    var req = createAjaxObj();
    req.onreadystatechange = function(){
        if(4==req.readyState){
            if(200==req.status){
                if(handle200){
                    handle200(req.responseText);
                }
            }else if(404==req.status){
                if(handle404){
                    handle404();
                }
            }else if(500==req.status){
                if(handle500){
                    handle500();
                }
            }
        }else{
            if(loading){
                loading();
            }
        }
    };
    if("get"==method.toLowerCase()){
        req.open(method,url+(params==null?"":"?"+params),async);
        req.send(null);
    }else if("post" ==method.toLowerCase()){
        req.open(method,url,async);
        req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        req.send(params);
    }
}

/** For Example
// 使用自己的ajax 类库发送 请求    
        sendAjaxReq("post",
            "${base}/brandAjax/checkBrandId.do",
            "brandId="+yhdBrandId,true,
            function(req){
                eval(" var data="+ req.responseText);
                if(data.message==true){
                        alert("品牌ID:"+yhdBrandId+"已存在,不可重复添加!");
                        $("#hidBrandId")[0].innerHTML=""; 
                        $("#brandName").val("");                                
                    }else{
                        submitFlag=1;
                        $("#selBrand")[0].style.display = "none";                          
                    }
            });
*/

时间: 2024-12-28 20:56:46

摆脱jquery,用自己的JS库实现ajax功能的相关文章

编写自己的javascript功能库之Ajax(仿jquery方式)

本人学习的是php,所以就用php跟js来演示代码了,主要是锻炼自己写js的能力,练练手而已. 下面这是我编写的操作ajax的代码功能,勉强让我称之为库吧.. js代码实例(tool.ajax.js): 1 /** 2 * JS库 使用ajax 3 * @author jlb 4 */ 5 if(typeof tool == 'undefined') { 6 var tool = function(){}; 7 } 8 tool.ajax = function(){}; 9 10 11 /**

JQuery之JQuery的版本 JQuery入门 属性获取 JQuery就绪函数 JS文档就绪函数和JQuery文档就绪函数的区别 JS对象和JQuery对象的区别 关于$的使用 多个JS库的冲突解决方案

JQuery的版本 JQuery入门 属性获取 JQuery就绪函数 JS文档就绪函数和JQuery文档就绪函数的区别 JS对象和JQuery对象的区别 关于$的使用 多个JS库的冲突解决方案 JQuery的版本 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>jQuery的版本</title> <

解决jQuery多个版本,与其他js库冲突方法

jQuery多个版本或和其他js库冲突主要是常用的$符号的问题,这个问题 jquery早早就有给我们预留处理方法了,下面一起来看看解决办法. 1.同一页面jQuery多个版本或冲突解决方法. <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8" /> <title>jQuery测试页</title> </head>

jQuery与其他JS库共存

* 事件 * jQuery与其他JS库共存 * 调用jQuery.noConflict()方法 * 表示jQuery将"$"符号的使用权交出 * 通过两种方式将"$"找回 * 第一种 jQuery(function($){// 函数域 // function中定义形参"$" $("ul>li"); }); * 第二种 (function($){// 函数域 $("ul>li"); })(jQue

jQuery与其他JS库冲突解决

实际开发中遇到JQuery与其他js库起冲突 究其原因,是它们的全局对象定义冲突了,特别是变量”$”, 可重载$函数.使用jQuery.noConflict()就可以通过重载$函数 例:项目中应用的 <script type="text/javascript" src="js/mootools.js"></script> <script type="text/javascript">         jQuer

jquery和其他js库起冲突的解决方法

我以为jquery只会和其他js框架如(Dojo,Prototype,ExtJs)等发生冲突 今天用了一下My97DatePicker日历控件 当我同时引入jquery.js和/My97DatePicker/WdatePicker.js时,出现错误,日历控件不可用 应该是js库发生冲突了 做了如下改动: var $j=jQuery.noConflict(); 以后用jquery的时候不再用$而是$j 这样问题就解决了.. 再分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段

面向Web Cloud的HTML5 App开发实战:Browser&amp;HTML5&amp;CSS3&amp;PhoneGap&amp;jQuery Mobile&amp; WebSocket&amp;Node.js(2天)

如何理解Android架构设计的初心并开发出搭载Android系统并且具备深度定制和软硬整合能力特色产品,是本课程解决的问题. 课程以Android的五大核心:HAL.Binder.Native Service.Android Service(并以AMS和WMS为例).View System为主轴,一次性彻底掌握Android的精髓. 之所以是开发Android产品的必修课,缘起于: 1,     HAL是Android Framework&Application与底层硬件整合的关键技术和必修技

jquery——滚动条插件jscroll.js

一.效果如下 点击“测试中奖纪录”弹出弹框.弹框中内容超出时显示滚动条. 二.代码部分 1.html结构 <body> <a href="javascript:;" id="bbb">测试中奖纪录</a> <!--弹框6中奖纪录--> <div class="tcbox" id="reward_info" style="display:none">

Markdown JS库

Markdown作为一门书写语言,比HTML简单很多.GitHub使用它做项目显示,StackOverflow也使用的是Markdown编辑器,还可以做博客.Markdown能通过一些方法转换为HTML,进而增加样式.可以通过编译生成,也可以在WEB上通过JS来做显示.本文涉及三个开源的JS库来编辑.显示Markdown. Markdown-js 项目地址:https://github.com/evilstreak/markdown-js 使用方法: <!DOCTYPE html> <h