ajax

Ajax、Json深入浅出,及原生Ajax及简化版Ajax 通过对ajax的就绪状态做判断,我们在就绪状态是4的情况下编写我们的对响应结果的处理逻辑代码,但是不是任何响应结果我们都要处理,因为服务器的响应也有状态码,比如:200、404、500等等。在ajax对象中提供了一个监听机制 “onreadystatechange”,用来监听ajax的属性readyState的改变情况,一旦该值改变,就会触发监听中的函数的执行。发送请求后,不需要等待服务端的响应,继续按照顺序执行其他逻辑代码,监听到响应,自动调用指定的方法。 阅读详情

/*AJAXRequest类部分*/
function AJAXRequest() {
 var xmlPool=[],AJAX=this,ac=arguments.length,av=arguments;
 var xmlVersion=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
 var emptyFun=function(){};
 var av=ac>0?typeof(av[0])=="object"?av[0]:{}:{};
 var encode=av.charset?av.charset.toUpperCase()=="UTF-8"?encodeURIComponent:escape:encodeURIComponent;
 this.url=getp(av.url,"");
 this.oncomplete=getp(av.oncomplete,emptyFun);
 this.content=getp(av.content,"");
 this.method=getp(av.method,"POST");
 this.async=getp(av.async,true);
 this.onexception=getp(av.onexception,emptyFun);
 this.ontimeout=getp(av.ontimeout,emptyFun);
 this.timeout=getp(av.timeout,3600000);
 this.onrequeststart=getp(av.onstartrequest,emptyFun);
 this.onrequestend=getp(av.onendrequest,emptyFun);
 if(!getObj()) return false;
 function getp(p,d) { return p?p:d; }
 function getObj() {
  var i,j,tmpObj;
  for(i=0,j=xmlPool.length;i<j;i++) if(xmlPool[i].readyState==0||xmlPool[i].readyState==4) return xmlPool[i];
  try { tmpObj=new XMLHttpRequest; }
  catch(e) {
   for(i=0,j=xmlVersion.length;i<j;i++) {
    try { tmpObj=new ActiveXObject(xmlVersion[i]); } catch(e2) { continue; }
    break;
   }
  }
  if(!tmpObj) return false;
  else { xmlPool[xmlPool.length]=tmpObj; return xmlPool[xmlPool.length-1]; }
 }
 function $(id){return document.getElementById(id);}
 function $N(n,d){n=parseInt(n);return(isNaN(n)?d:n);}
 function $VO(v) {
  if(typeof(v)=="string") {
   if(v=$(v)) return v;
   else return false; }
  else return v;
 }
 function $ST(obj,text) {
  var nn=obj.nodeName.toUpperCase();
  if("INPUT|TEXTAREA".indexOf(nn)>-1) obj.value=text;
  else try{obj.innerHTML=text;} catch(e){};
 }
 function $CB(cb) {
  if(typeof(cb)=="function") return cb;
  else {
   cb=$VO(cb);
   if(cb) return(function(obj){$ST(cb,obj.responseText);});
   else return emptyFun; }
 }
 function send(purl,pc,pcbf,pm,pa) {
  var purl,pc,pcbf,pm,pa,ct,ctf=false,xmlObj=getObj(),ac=arguments.length,av=arguments;
  if(!xmlObj) return false;
  if(!pm||!purl||!pa) return false;
  var ev={url:purl, content:pc, method:pm};
  purl+=(purl.indexOf("?")>-1?"&":"?")+Math.random();
  xmlObj.open(pm,purl,pa);
  AJAX.onrequeststart(ev);
  if(pm=="POST") xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  ct=setTimeout(function(){ctf=true;xmlObj.abort();},AJAX.timeout);
  xmlObj.onreadystatechange=function() {
   if(ctf) { AJAX.ontimeout(ev); AJAX.onrequestend(ev); }
   else if(xmlObj.readyState==4) {
    ev.status=xmlObj.status;
    try{ clearTimeout(ct); } catch(e) {};
    try{ if(xmlObj.status==200) pcbf(xmlObj); else AJAX.onexception(ev); }
    catch(e) { AJAX.onexception(ev); }
    AJAX.onrequestend(ev);
   }
  }
  if(pm=="POST") xmlObj.send(pc); else xmlObj.send("");
 }
 this.setcharset=function(cs) {
  if(cs.toUpperCase()=="UTF-8") encode=encodeURIComponent; else encode=escape;
 }
 this.get=function() {
  var purl,pcbf,ac=arguments.length,av=arguments;
  purl=ac>0?av[0]:this.url;
  pcbf=ac>1?$CB(av[1]):this.oncomplete;
  if(!purl&&!pcbf) return false;
  send(purl,"",pcbf,"GET",true);
 }
 this.update=function() {
  var purl,puo,pinv,pcnt,ac=arguments.length,av=arguments;
  puo=ac>0?$CB(av[0]):emptyFun;
  purl=ac>1?av[1]:this.url;
  pinv=ac>2?$N(av[2],1000):null;
  pcnt=ac>3?$N(av[3],0):null;
  if(pinv) {
   send(purl,"",puo,"GET",true);
   if(pcnt&&--pcnt) {
    var cf=function(cc) {
     send(purl,"",puo,"GET",true);
     if(cc<1) return; else cc--;
     setTimeout(function(){cf(cc);},pinv);
    }
    setTimeout(function(){cf(--pcnt);},pinv);
   }
   else return(setInterval(function(){send(purl,"",puo,"GET",true);},pinv));
  }
  else send(purl,"",puo,"GET",true);
 }
 this.post=function() {
  var purl,pcbf,pc,ac=arguments.length,av=arguments;
  purl=ac>0?av[0]:this.url;
  pc=ac>1?av[1]:"";
  pcbf=ac>2?$CB(av[2]):this.oncomplete;
  if(!purl&&!pcbf) return false;
  send(purl,pc,pcbf,"POST",true);
 }
 this.postf=function() {
  var fo,vaf,pcbf,purl,pc,pm,ac=arguments.length,av=arguments;
  fo=ac>0?$VO(av[0]):false;
  if(!fo||(fo&&fo.nodeName!="FORM")) return false;
  vaf=fo.getAttribute("onsubmit");
  vaf=vaf?(typeof(vaf)=="string"?new Function(vaf):vaf):null;
  if(vaf&&!vaf()) return false;
  pcbf=ac>1?$CB(av[1]):this.oncomplete;
  purl=ac>2?(av[2]!=null?(av[2]!=""?av[2]:fo.action):fo.action):(fo.action?fo.action:this.url);
  pm=ac>3?(av[3]!=null?(av[3]!=""?av[3]:"POST"):"POST"):(fo.method?fo.method.toUpperCase():"POST");
  if(!pcbf&&!purl) return false;
  pc=this.formToStr(fo);
  if(!pc) return false;
  if(pm) {
   if(pm=="POST") send(purl,pc,pcbf,"POST",true);
   else if(purl.indexOf("?")>0) send(purl+"&"+pc,"",pcbf,"GET",true);
    else send(purl+"?"+pc,"",pcbf,"GET",true);
  }
  else send(purl,pc,pcbf,"POST",true);
 }

 this.formToStr=function(fc) {
  var i,qs="",and="",ev="";
  for(i=0;i<fc.length;i++) {
   e=fc[i];
   if (e.id!=''||e.name!='') {
    if (e.type=='select-one'&&e.selectedIndex>-1) ev=e.options[e.selectedIndex].value;
    else if (e.type=='checkbox' || e.type=='radio') {
     if (e.checked==false) continue;
     ev=e.value;
    }
    else ev=e.value;
    ev=encode(ev);
    qs+=and+(e.id!=''?e.id:e.name)+'='+ev;
    and="&";
   }
  }
  return qs;
 }
}
 

直接放到文件可用

ajax通用函数,兼容市面所有浏览器,纯javascript实现 Ajax的通用函数,兼容IE chrome firefox 立即下载

相关推荐

Palantir的Ontology:从静态知识图谱到动态业务引擎的跃迁

本文探讨了Palantir的Ontology技术如何将静态知识图谱升级为动态业务引擎。通过引入函数和行动作为核心元素,Ontology实现了业务逻辑的自动化响应与执行,显著提升物流、能源等领域的运营效率。文章详细解析了其混合存储引擎、状态监听网络等关键技术设计,并对比展示了传统架构与Ontology架构的业务价值差异。

weixin_42570296的博客 200

ajax参数详解

1. url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址。 2.data: 要求为Object或String类型的参数,发送到服务器的数据。 如果已经不是字符串,将自动转换为字符串格式。 get请求中将附加在url后。 防止这种自动转换,可以查看processData选项。 对象必须为key/value格式, 例如{foo1:“bar1”,foo2:“bar2”}转换为&...

weixin_45721343的博客 1123

ptrade从零开始学量化第1期【ptrade如何新建策略、新建回测、新建交易】什么是ptrade量化交易?

回测之前需要对开始时间、结束时间、回测资金、回测基准、回测频率几个要素进行设定,设定完毕后点击保存。然后再点击回测按键,系统就会开始运行回测,回测的评价指标、收益曲线、日志都会在界面中展现。可以选择不同的业务类型(比如股票),然后给策略设定一个名称,添加成功后可以在默认策略模板基础上进行策略编写。交易界面点击新增按键进行新增交易操作,策略方案中的对象为所有策略列表中的策略,给本次交易设定名称并点击确定后系统就开始运行交易了。交易开始运行后,可以点击交易详情,查看策略评价指标、交易明细、持仓明细、交易日志。

GJ57017_wx的博客 2483

asp获取网页源代码并处理乱码的方法

http://www.webkaka.com/blog/archives/the-method-of-using-asp-to-get-htmlcode.html asp获取网页源代码的前提条件有两个:一是服务器支持ADODB.STREAM组件,二是服务器安装了XMLHTTP组件并允许调用。 如果您使用的空间是国内的,那么不必担心,国内95%的空间都支持上面提到的两个组件;如果您使用的空间

SJian123的专栏 2103

软件项目质量管理

识别项目中涉及质量管理的不同角色,如项目经理、质量经理、测试人员等,明确每个角色的职责和任务,包括负责哪些质量管理活动和决策。1、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。2、编制软件项目的质量管理计划,包括确定项目的质量标准和要求,以及制定质量控制和质量保证策略等。测试用例表是质量控制过程中的关键工具,确保所有功能和场景都被验证,减少项目中的缺陷。1、理解项目质量管理的基本过程,包括质量计划、质量保证、质量控制和质量改进;明确质量管理活动中的角色和职责。

weixin_51996255的博客 1260

基于 STM32 设计的 HC05 蓝牙音箱

本项目介绍如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。该音箱可以接收来自手机或其他蓝牙设备的音频数据,并通过扬声器播放。该项目展示了如何使用 STM32 微控制器和 HC05 蓝牙模块设计一个简单的蓝牙音箱。易于实现功能实用可扩展性强如果您需要开发一个蓝牙音箱,该项目可以作为参考。

走向CTO的路上... 2471

httpxml.send->拒绝访问错误80070005的解决方法

今天练习用vba抓网页信息遇到一个问题,当创建对象Microsoft.XMLHTTP以后,使用http.xml发送访问请求的时候,被拒绝了。 这种一般和安全性有关,本地程序阻止了你的访问请求。 解决的一个办法办法是把Microsoft.XMLHTTP换成MSXML2.ServerXMLHTTP.6.0 另外一个方式就是把那个网页加到信任站点里面就可以了。

ToBeAMensch 7883

【camera-radar】基于ROS的多传感器融合感知系统实现(雷达+相机)(2)

实现功能:代码下载地址:下载地址 1)基于深度学习的目标检测;2)基于雷达的距离估计和预测;3)多传感器感知结果融合模块。 相机感知模块解析 4. Run nodes: python3 fusion_node/main.py python3 gps_node/main.py python3 radar_node/main.py python3 2d_detection_node/main.py #(additional instructions in 2d_detection_node/README.m

踟蹰横渡口,彳亍上滩舟。 9951

CTF web学习笔记

web狗生存之道 讲师:y4ngshu 日常渗透测试(笔记) 1.信息收集 2.登陆后台----->getshell 3.Getshell失败----->转换思路------>挖掘其它漏洞(sql注入等)------>列库收集用户信息 4.拿到用户密码------>撞邮箱-------->邮箱拿到关键信息----------->拿到vpn 5.通过vpn去访问文件服务器------->写脚本getshell CTF学习 1.xss打后台-----&gt.

daqiangdetianxia的博客 2119

Midscene.js(3):手把手教你用 YAML 脚本实现 AI 驱动的 Web UI 自动化「喂饭教程」

Midscene.js是一款开源的AI驱动UI自动化工具,通过自然语言描述即可控制浏览器或Android设备执行操作。它支持YAML脚本编写测试用例,降低了自动化测试门槛。

blues_C的博客 3241

ABAP 平台 SOAUTH2_CLIENT 全面实战:用一套配置,打通 OAuth 2.0 客户端的创建、联调与运维

本文是一份ABAP平台上配置OAuth 2.0客户端的全流程指南,重点介绍新界面SOAUTH2_CLIENT的使用方法。内容涵盖从概念解析到实操步骤,包括四种常见授权方式的选择、证书信任管理、Scope配置以及联调技巧。指南通过两个企业级案例(对接SAP BTP Cloud Integration和SAML 2.0身份联合)展示实际应用场景,并提供了配置清单和伪代码示例。特别强调新界面将客户端配置、令牌测试和校验功能整合的工程化优势,以及与旧事务码OA2C_CONFIG的主要差异。文中多处引用SAP官方文档

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 319

CTF实例题

1.靶机目标 http://117.167.136.244:28057 2.靶机为post请求即用burpsuite抓包 打开burpsuite 3.用burpsuite对靶机进行抓包 找到购买卡密 进行购买卡密 打开intercept 抓包成功 找到注入点如下http://117.167.136.244:28057/ajax.php?act=selgo 4.用sqlmap注入 (1)找库:sqlmap -u “http://117.167.136.244:28057/ajax.php?act

A1956936030的博客 1591

cesium单向流动线效果

在学材质的路上一去不复返了属实是,难也难在这。还请各位大佬多多指教~

就zhei? 689

什么是Ajax以及ajax请求的步骤

什么是Ajax以及ajax请求的步骤 1.Ajax是什么? Asynchronous JavaScript & XML。Ajax是web开发的一种技术。 2.Ajax请求的步骤 (1)创建`XMLHttpRequest`对象,也就是创建一个异步调用对象; (2)创建一个新的`HTTP`请求,并指定该`HTTP`请求的方式、`URL`及验证信息; (3)设置响应`HTTP`请求状...

Fly的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

什么是ajax?ajax详解

今天来聊一聊前后端交互的重要工具AJAX 1. AJAX - 到底什么是Ajax? ajax 全名 async javascript and XML(异步JavaScript和XML) 是前后台交互的能⼒ 也就是我们客户端给服务端发送消息的⼯具,以及接受...

刘顺顺的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

异步请求ajax介绍,原生ajax,$.ajax基本使用

在这篇文章中,我们将学习ajax的工作原理,已经使用原生的ajax和jquery的ajax来进行编程练习。 目录 ajax原理介绍 什么是ajax ajax的优点 ajax的应用场景 ajax原理分析 使用ajax 原生ajax jquery使用ajax $.ajax() $.get() $.post() 总结 ajax原理介绍 ajax现在是前后端交互的重要工具,可以说,只要从事于it行业,ajax那就是必须要掌握的一名技术,下面我们就来对a...

秃头披风侠的博客 3946

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Ajax】原生Ajax与jQuery中的Ajax

文章目录1 express 基本使用2 原生 Ajax2.1 Ajax 简介2.2 XML 简介2.3 Ajax 的特点2.3.1 Ajax 的优点2.3.2 Ajax 的缺点2.4 Ajax 的使用2.4.1 核心对象2.4.2 使用步骤2.4.3 解决 IE 缓存问题2.4.4 AJAX 请求状态2.5 GET.html2.6 POST.html2.7 JSON.html2.8 IE 缓存问题2.9 超时与网络异常2.10 取消请求2.11 重复请求问题3 jQuery 中的 Ajax3.1 get 请

weixin_45980065的博客 1693

【ajax】ajax详解,ajax是什么?

ajax是一种用来改善用户体验的技术,其本质是利用浏览器提供的一个特殊的对象(XMLHttpRequest,也可称之为ajax对象)向服务器发送异步请求。发送请求时,浏览器会锁定当前页面,用户不能够对当前页面做其他操作。朋友们我们本篇的内容到这就结束了,本篇的内容还是非常简单的,如果有啥不会的朋友咱们可以一起谈论哈~true:异步的,发送请求的同时,浏览器不会销毁当前页面,用户任然可以对当前页面做其他操作。注: 异步请求:发送请求的同时,浏览器不会销毁当前页面,用户任然可以对当前页面做其他操作。...

小源的成长历程 6636

【Ajax】Ajax技术讲解

为什么需要Ajax? 需求:有的时候我们需要将本次的响应结果和前面的响应结果内容在同一个界面中展现给用户。 解决:在后台服务器端将多次响应内容拼接成一个jsp页面,但是这样会造成很多响应内容被重复响应,资源浪费。所以,我们使用Ajax技术 什么是Ajax? AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),是一种异步刷新技术...

寒泉 2万+

原生AJAX,jQuery Ajax创建使用

AJAX 全称为 Asynchronous JavaScript And Xml ,表示异步的Java脚本和新技术。

jocer_zhu的博客 973

Ajax 什么是Ajax? Ajax的基本语法

Ajax 什么是Ajax? AJAX(Asynchronous Javascript And XML)翻译成中文就是“异步Javascript和XML”。即使用Javascript语言与服务器进行异步交互,传输的数据为XML(当然,传输的数据不只是XML,现在更多使用json数据)。 同步交互: 客户端发出一个请求后,需要等待服务器响应结束后,才能发出第二个请求。 异步交互: 客户端发出一个请...

felix的博客 2746

【Ajax】了解Ajax与jQuery中的Ajax

相比于 $.get() 和 $.post() 函数,jQuery 中提供的 $.ajax() 函数,是一个功能比较综合的函数,它允许我们对 Ajax 请求进行更详细的配置。jQuery 中 $.get() 函数的功能单一,专门用来发起 get 请求,从而将服务器上的资源。之前所学的技术,只能把网页做的更美观漂亮,或添加一些动画效果,但是,Ajax能让我们轻松实现。数据的添加、删除、修改、查询操作,都需要通过 ajax 的形式,来实现数据的交互。使用 $.ajax() 发起 GET 请求时,只需要将。

早睡早起长头发的博客 2597

最全的ajax详细介绍,ajax全

最全ajax全套 ajax简介 AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。Ajax不是一种新的编程语言,而是使用现有标准的新方法。AJAX可以在不重新加载整个页面的情况下,与服务器交换数据。这种异步交互的方式,使用户单击后,不必刷新页面也能获取新数据。使用Aja

前端技术教程 1万+

ajax、反向ajax、jsonp详解

ajax详解 什么是ajax 其实ajax已经属于老技术了,现在几乎没人不会用了,在这里主要是把底层的东西给大家分享一下,以备应对装逼的面试官。 ajax即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在

卡布洛技术专栏 5918

ajax的三种方法以及ajax概念

目录 Ajax技术主要包括: 1.客户端脚本语言:JavaScript 2.异步数据获取技术:XMLHttpRequest 3.数据交换和操作技术:XML和XSTL 4.动态显示和交互技术DOM及基于标准的表示技术XHTML和CSS等。 ajax:异步请求特点:局部刷新 异步加载 jQuery中的Ajax: jQuery中发起Ajax请求的三种方法: $.get():向服务器获取数据 $.post():用于向服务器提交数据。 $.ajax用于向服务器提交和获取数据。 $.ge

weixin_54401017的博客 8181

原生ajax和Jquery的ajax

目录 原生ajax 传统请求(同步方式)的问题 Ajax优势和作用 Ajax请求与传统请求的区别: ajax原理(方法,属性 ) XMLHttpRequest open send 属性 readyState tatus responseText 事件 ajax实现步骤 ajax的get和post传参 get zhuce.html文件代码如下: post Jquery之Ajax get post ajax 封装ajax 原生ajax Asynchronou..

weixin_58139900的博客 1941
上一篇: 动态添加行
下一篇: 正则表达是常用 表达式
lsf5921
博客等级 码龄19年 12粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值