文档章节

原生态ajax写法 转载

B
 BACKDEV
发布于 2016/06/24 09:29
字数 1480
阅读 58
收藏 1
点赞 0
评论 2

转载于:http://my.xueh5.com/mattsi/detail-3622.html

这是我见过写的最好的原生态写法,里面注释清晰,思路清晰,希望对大家有用

function zyajax(){}
zyajax.version="1.1";
zyajax.async=true;
zyajax.httpMethod="POST";
zyajax.responseType="xml";
zyajax.url="";
zyajax.debug=false;
zyajax.getXmlHttpObj = function()
{
    if(typeof XMLHttpRequest != "undefined")
    {
    return new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
    var aVersion =["MSXML2.XMLHttp.5.0",
    "MSXML2.XMLHttp.4.0",
    "MSXML2.XMLHttp.3.0",
    "MSXML2.XMLHttp",
    "Microsoft.XMLHttp"];
    for(var i=0;i<aVersion.length;i++)
    {
    try
    {
    var oXmlHttp = new ActiveXObject(aVersion[i]);
    return oXmlHttp;
    }
    catch(e)
    {
    }
    }
    }
    throw new Error("XMLHttp object can't be create!");
};
//
//  使用XMLHTTP和远程服务器通信。
//
//  参数名称        必须    类型        取值范围            描述
//-------------------------------------------------------------------------------------------
//async是      boolean     true/false          是否使用异步方式
//httpMethod是      string      "post"/"get"        http方法
//responseType否      string      "text"/"xml"        返回数据的类型
//url是      string                          接收请求的URL地址
//callback否      function                        异步方式操作完成时执行的回调函数
//postData否      string                          post方式时发送的数据
//
//  注:非必须的参数,如不被传递时使用null代替。
//zyajax.transmit = function(async, httpMethod, responseType, url, callback, postData)
//------------------------
//使用XMLHTTP和远程服务器通信。
//
//  参数名称        必须    类型        取值范围            描述
//-------------------------------------------------------------------------------------------
//qwzyCommond是      string      PHP端执行函数名          
//postData是      string      参数       JSON格式:{parameters:["param1","param2","param3"]}
//async否      boolean     true/false        是否使用异步方式
//callback是      string      回调函数                    
//------------------------
zyajax.call = function(qwzyCommond,postData,async,callback)
{
    var httpMethod=zyajax.httpMethod;
    var responseType=zyajax.responseType;
    var url=zyajax.url;
    var params="";
    objParams=postData["parameters"];
    if(objParams.length!=0){
    for(var a=0;a<objParams.length;a++){
    params+=objParams[a]+"~*zyzajax*~";
    }
    params=params.substring(0,params.length-11)
    }
    params="sbmtData="+encodeURIComponent(params)+"&qwzyCommond="+qwzyCommond;
        httpMethod = httpMethod.toLowerCase();
        if(responseType != null) responseType = responseType.toLowerCase();
        var xmlhttp = this.getXmlHttpObj();
        url=url+"?"+params;
    xmlhttp.open(httpMethod, url, async);
    if(!async && httpMethod == "post")
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    if(async)
    {
    xmlhttp.onreadystatechange = function()
    {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        try
        {
            if(typeof(callback) == "function")
            {
                switch(responseType)
                {
                case "xml":
                    var cmdXML=xmlhttp.responseXML;
                    var elements = cmdXML.getElementsByTagName("cmd");
                    var xmlLen=elements.length;
                    var returnValue="";
                    for(var a=0;a<xmlLen;a++){
                    if(elements[a].getAttribute("cmd")=="txt"){
                    returnValue=zyajax.getContent(elements[a]);
                    }else{
                    eval(zyajax.getContent(elements[a]));
                    }
                    }
                    callback(returnValue);
                break;
                    case "json":
                    var jsonData=eval("("+xmlhttp.responseText+")");
                    var jsonLen=jsonData.length;
                    var returnValue="";
                    for(var a=0;a<jsonLen;a++){
                    if(jsonData[a].cmd=="txt"){
                    returnValue=jsonData[a].code;
                    }
                    else{
                    eval(jsonData[a].code);
                    }
                    }
                    callback(returnValue);
                    break;
            default:
                callback(null);
                }
                if(zyajax.debug){
                    alert("请求/响应函数:"+qwzyCommond);
                    alert("服务端返回内容:\n"+xmlhttp.responseText);
                    }
            }
    }
    finally
    {
        xmlhttp = null;
    }
    }
    }
    xmlhttp.send(params);
    }
    else
    {
    var returnValue="";
    xmlhttp.send(params);
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        switch(responseType)
    {
        case "xml":
                    var cmdXML=xmlhttp.responseXML;
                    var elements = cmdXML.getElementsByTagName("cmd");
                    var xmlLen=elements.length;
                     
                    for(var a=0;a<xmlLen;a++){
                    if(elements[a].getAttribute("cmd")=="txt"){
                    returnValue=zyajax.getContent(elements[a]);
                    }else{
                    eval(zyajax.getContent(elements[a]));
                    }
                    }
                    return returnValue;
                break;
                    case "json":
                var jsonData=eval("("+xmlhttp.responseText+")");
                var jsonLen=jsonData.length;
                var returnValue="";
                for(var a=0;a<jsonLen;a++){
                if(jsonData[a].cmd=="txt"){
                returnValue=jsonData[a].code;
                }
                else{
                eval(jsonData[a].code);
                }
                }
                return returnValue;
                break;
        default:
            return null;
    }
        if(zyajax.debug){
            alert("请求/响应函数:"+qwzyCommond);
            alert("服务端返回内容:\n"+xmlhttp.responseText);
            }
    }
    else
    {
        return null;
    }
    }
};
//简洁zyajax请求
zyajax.speedsmit=function (params,commond,callback)
{
    var async=zyajax.async;
    var httpMethod=zyajax.httpMethod;
    var responseType=zyajax.responseType;
    var url=zyajax.url;
    var myMethod=zyajax.myMethod;
    var params="sbmtData="+encodeURIComponent(params)+"&qwzyCommond="+commond;
    var httpMethod = httpMethod.toLowerCase();
        if(responseType != null) responseType = responseType.toLowerCase();
        var xmlhttp = this.getXmlHttpObj();
        url=url+"?"+params;
    xmlhttp.open(httpMethod, url, async);
    if(!async && httpMethod == "post")
        xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    if(async)
    {
    xmlhttp.onreadystatechange = function()
    {
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        try
        {
            if(typeof(callback) == "function")
            {
                switch(responseType)
                {
                    case "xml":
                     
                    var cmdXML=xmlhttp.responseXML;
                     
                    var elements = cmdXML.getElementsByTagName("cmd");
                    var xmlLen=elements.length;
                    var returnValue="";
                    for(var a=0;a<xmlLen;a++){
                    if(elements[a].getAttribute("cmd")=="txt"){
                    returnValue=zyajax.getContent(elements[a]);
                    }else{
                    eval(zyajax.getContent(elements[a]));
                    }
                    }
                    callback(returnValue);
                break;
                    case "json":
                    var jsonData=eval("("+xmlhttp.responseText+")");
                    var jsonLen=jsonData.length;
                    var returnValue="";
                    for(var a=0;a<jsonLen;a++){
                    if(jsonData[a].cmd=="txt"){
                    returnValue=jsonData[a].code;
                    }
                    else{
                    eval(jsonData[a].code);
                    }
                    }
                    callback(returnValue);
                    break;
            default:
                callback(null);
                }
                if(zyajax.debug){
                    alert("请求/响应函数:"+commond);
                    alert("服务端返回内容:\n"+xmlhttp.responseText);
                    }
            }
    }
    finally
    {
        xmlhttp = null;
    }
    }
    }
    xmlhttp.send(params);
    }
    else
    {
    var returnValue="";
    xmlhttp.send(params);
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
        switch(responseType)
    {
        case "xml":
                    var cmdXML=xmlhttp.responseXML;
                    var elements = cmdXML.getElementsByTagName("cmd");
                    var xmlLen=elements.length;
                    for(var a=0;a<xmlLen;a++){
                    if(jsonData[a].cmd=="txt"){
                returnValue=jsonData[a].code;
                }
                else{
                eval(jsonData[a].code);
                }
                    }
                break;
        case "json":
                var jsonData=eval("("+xmlhttp.responseText+")");
                var jsonLen=jsonData.length;
                for(var a=0;a<jsonLen;a++){
                if(jsonData[a].cmd=="txt"){
                returnValue=jsonData[a].code;
                }
                else{
                eval(jsonData[a].code);
                }
                }
                return returnValue;
                break;
             
             
        default:
            return null;
    }
        if(zyajax.debug){
            alert("请求/响应函数:"+commond);
            alert("服务端返回内容:\n"+xmlhttp.responseText);
            }
    }
    else
    {
        return null;
    }
    }
    return returnValue;
};
zyajax.request=function(){
    var arguNum=arguments.length;
    if(arguNum!=0){
    var objParams=arguments[1]["parameters"];
    var params="";
    if(objParams.length!=0){
    for(var a=0;a<objParams.length;a++){
        params+=objParams[a]+"~*zyzajax*~";
    }
        params=params.substring(0,params.length-11);
    }
        return zyajax.speedsmit(params,arguments[0]["zyajaxfun"],zyajax.myMethod);
    }
    }
    zyajax.getContent=function(domObj){
    if(!-[1,]){
    return domObj.text;
    }else{
    return domObj.textContent;
    }
}
//通过同步GET方式获得指定服务端的数据
//url 指定的服务端处理文件路径
zyajax.getText = function(url)
{
  var xmlhttp = this.getXmlHttpObj();
  xmlhttp.open("GET", url, false);
  xmlhttp.send(null);
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
    return xmlhttp.responseText;
    }
    else
    {
        return null;
    }
};
//通过同步POST方式获得指定服务端的数据
//url 指定的服务端处理文件路径
//post 发送的数据
zyajax.postText = function(url,postData)
{
  var xmlhttp = this.getXmlHttpObj();
  xmlhttp.open("POST", url, false);
  xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlhttp.send(postData);
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
    return xmlhttp.responseText;
    }
    else
    {
        return null;
    }
};
//以异步GET方式获得指定服务端的数据
//url 指定的服务端处理文件
//callback 异步处理方法
zyajax.asyncGetText = function(url,callback)
{
    var xmlhttp = this.getXmlHttpObj();
    xmlhttp.open("GET", url, true);
    xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
    try
    {
        if(typeof(callback) == "function")
        {
            callback(xmlhttp.responseText);
        }
}
finally
{
    xmlhttp = null;
}
}
}
    xmlhttp.send(null);
};
//以异步Post方式获得指定服务端的数据
//url 指定的服务端处理文件
//callback 异步处理方法
//post 发送的数据
zyajax.asyncPostText = function(url,callback,postData)
{
    var xmlhttp = this.getXmlHttpObj();
    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
    try
    {
        if(typeof(callback) == "function")
        {
            callback(xmlhttp.responseText);
        }
}
finally
{
    xmlhttp = null;
}
}
}
    xmlhttp.send(postData);
};
//通过同步GET方式获得指定服务端的数据
//url 指定的服务端处理文件路径
zyajax.getXml = function(url)
{
  var xmlhttp = this.getXmlHttpObj();
  xmlhttp.open("GET", url, false);
  xmlhttp.send(null);
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
    return xmlhttp.responseXML;
    }
    else
    {
        return null;
    }
};
//通过同步Post方式获得指定服务端的数据
//url 指定的服务端处理文件路径
//post 发送的数据
zyajax.postXml = function(url,postData)
{
  var xmlhttp = this.getXmlHttpObj();
  xmlhttp.open("POST", url, false);
  xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  xmlhttp.send(postData);
    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
    {
    return xmlhttp.responseXML;
    }
    else
    {
        return null;
    }
};
//以异步GET方式获得指定服务端的数据
//url 指定的服务端处理文件
//callback 异步处理方法
zyajax.asyncGetXml = function(url,callback)
{
    var xmlhttp = this.getXmlHttpObj();
    xmlhttp.open("GET", url, true);
    xmlhttp.onreadystatechange = function()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
    try
    {
        if(typeof(callback) == "function")
        {
            callback(xmlhttp.responseXML);
        }
        }
        finally
        {
        xmlhttp = null;
        }
    }
}
    xmlhttp.send(null);
};
//以异步Post方式获得指定服务端的数据
//url 指定的服务端处理文件
//callback 异步处理方法
zyajax.asyncPostXml = function(url,callback,postData)
{
    var xmlhttp = this.getXmlHttpObj();
    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.onreadystatechange = function()
        {
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            try
            {
                if(typeof(callback) == "function")
                {
                    callback(xmlhttp.responseXML);
                }
        }
        finally
        {
            xmlhttp = null;
        }
        }
        }
    xmlhttp.send(postData);
};

 

本文转载自:http://my.xueh5.com/mattsi/detail-3622.html

共有 人打赏支持
B
粉丝 1
博文 1
码字总数 0
作品 0
杭州
加载中

评论(2)

Mr_K
Mr_K
值得收藏
粥圆饼-
粥圆饼-
很有深度,非常详细!很棒!
MongoDB学习笔记~关于官方驱动集成IQueryable之后的一些事

关于官方驱动集成IQueryable之后的一些事,有好事也有坏事,好事就是它会将你的linq语句非常友好的翻译成MongoDB语句,而坏事就是有一些linq语句不会被翻译,不会被翻译的代价就是将整个结果...

mcy247 ⋅ 2017/12/06 ⋅ 0

webx3框架中@Params 这个的基层代码怎么实现的

像这段代码.我查资料说 这种写法是简易写法, 找基层的代码没有找到.请大神们,贴出来简易代码的原生态.thanks/

RainMan_ ⋅ 2015/08/06 ⋅ 1

JS能否实现发送http请求 原生态Ajax也行

JS能否实现发送http请求 原生态Ajax也行。 比如像Handler发送一个请求。

Contac ⋅ 2013/02/22 ⋅ 2

Jquery~$when_done_then的用法

对于$.ajax请求来说,如果层级比较多,程序看起来会比较乱,而为了解决这种问题,才有了$when...done...fail...then的封装,它将$.ajax这嵌套结构转成了顺序平行的结果,向下面的$.ajax写法,...

mcy247 ⋅ 2017/12/06 ⋅ 0

jdbctemplate调用存储过程

项目需要使用原生态的jdbc调用存储过程,写法如下,备忘一下 首先声明一个存储过程 CREATE DEFINER = @ PROCEDURE (in par1 varchar(1000),in par2 varchar(100),in par3 varchar(200),in p...

王小明123 ⋅ 2013/06/17 ⋅ 0

feilong-taglib 1.10.4,JSP 常用自定义标签集

feilong-taglib 1.10.4 发布了,JSP 常用自定义标签集。 更新内容: [Feature] #18 concat 标签支持原生态写法 [Update] #19 HttpConcatTag 添加日志 #21 改造 HttpConcatParam #23 重构 co...

飞天奔月 ⋅ 2017/07/17 ⋅ 2

Jingle怎么传递参数啊

@问题石 你好,想跟你请教个问题: 社区博客 这个data-url 怎么传递参数啊比如我想点击这个后 ajax到blog.php?pid=4&ppid=4 还有救是accsess成功后..我不想是用js模板引擎,我想用原生态的js解...

amu1433 ⋅ 2014/05/29 ⋅ 2

强烈推荐 SimpleFramework 框架初学者入门

SimpleFramework 是构造符合标准的Web框架,用组合化配置化方式解决Web应用问题,基于Intercepting-Filter和MVC2模式采用Java 技术实现的Web应用级框架。 SimpleFramework 的核心理念 Simple...

upsimple ⋅ 2010/11/08 ⋅ 6

JQuery真的不难~第六回 JQ中的异步调用方式

前言 今天主要讲一下JQ中的异步编程,它将ajax进行封装,在进行异步请求时显得非常容易,无论是GET,POST方式,还是text,xml,javascript,json等数据通讯都是那么的自然 现在,我们就走入jq的...

mcy247 ⋅ 2017/12/06 ⋅ 0

全新的PDO数据库操作类(仅适用Mysql)

 1年前,也差不多刚开博那会,分享过一个pdo的数据库操作类(可参见:http://www.cnblogs.com/hooray/archive/2011/06/30/2094743.html),与其说是类,其实就只是几个封装好的函数,整体略...

橘子红了呐 ⋅ 2017/11/15 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

如何优雅的编程——C语言界面的一点小建议

我们鼓励在编程时应有清晰的哲学思维,而不是给予硬性规则。我并不希望你们能认可所有的东西,因为它们只是观点,观点会随着时间的变化而变化。可是,如果不是直到现在把它们写在纸上,长久以...

柳猫 ⋅ 17分钟前 ⋅ 0

从零手写 IOC容器

概述 IOC (Inversion of Control) 控制反转。熟悉Spring的应该都知道。那么具体是怎么实现的呢?下面我们通过一个例子说明。 1. Component注解定义 package cn.com.qunar.annotation;impo...

轨迹_ ⋅ 17分钟前 ⋅ 0

系统健康检查利器-Spring Boot-Actuator

前言 实例由于出现故障、部署或自动缩放的情况,会进行持续启动、重新启动或停止操作。它可能导致它们暂时或永久不可用。为避免问题,您的负载均衡器应该从路由中跳过不健康的实例,因为它们...

harries ⋅ 18分钟前 ⋅ 0

手把手教你搭建vue-cli脚手架-详细步骤图文解析[vue入门]

写在前面: 使用 vue-cli 可以快速创建 vue 项目,vue-cli很好用,但是在最初搭建环境安装vue-cli及相关内容的时候,对一些人来说是很头疼的一件事情,本人在搭建vue-cli的项目环境的时候也是...

韦姣敏 ⋅ 29分钟前 ⋅ 0

12c rman中输入sql命令

12c之前版本,要在rman中执行sql语句,必须使用sql "alter system switch logfile"; 而在12c版本中,可以支持大量的sql语句了: 比如: C:\Users\zhengquan>rman target / 恢复管理器: Release 1...

tututu_jiang ⋅ 43分钟前 ⋅ 0

Nginx的https配置记录以及http强制跳转到https的方法梳理

Nginx的https配置记录以及http强制跳转到https的方法梳理 一、Nginx安装(略) 安装的时候需要注意加上 --with-httpsslmodule,因为httpsslmodule不属于Nginx的基本模块。 Nginx安装方法: ...

Yomut ⋅ 59分钟前 ⋅ 0

SpringCloud Feign 传递复杂参数对象需要注意的地方

1.传递复杂参数对象需要用Post,另外需要注意,Feign不支持使用GetMapping 和PostMapping @RequestMapping(value="user/save",method=RequestMethod.POST) 2.在传递的过程中,复杂对象使用...

@林文龙 ⋅ 今天 ⋅ 0

如何显示 word 左侧目录大纲

打开word说明文档,如下图,我们发现左侧根本就没有目录,给我们带来很大的阅读障碍 2 在word文档的头部菜单栏中,切换到”视图“选项卡 3 然后勾选“导航窗格”选项 4 我们会惊奇的发现左侧...

二营长意大利炮 ⋅ 今天 ⋅ 0

智能合约编程语言Solidity之线上开发工具

工具地址:https://ethereum.github.io/browser-solidity/ 实例实验: 1.创建hello.sol文件 2.调试输出结果

硅谷课堂 ⋅ 今天 ⋅ 0

ffmpeg 视频格式转换

转 Mp4 格式 #> ffmpeg -i input.avi -c:v libx264 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 output.mp4#> ffmpeg -i input.avi -c:v libx264 -strict -2 -s 1......

Contac ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部