当前位置: 首页 > news >正文

WordPress显示403网站优化价格

WordPress显示403,网站优化价格,电子商务网站建设流程,优惠券网站怎样做2019独角兽企业重金招聘Python工程师标准>>> ajax入门之建立XHR对象 今天帮朋友写了一个简单的ajax的demo,发现了一些东西,决定写一篇文章记录一下,避免以后挖坑。 创建XMLHttpRequest 通常 function createXHR(){if(XMLHttpRequest){return …

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

ajax入门之建立XHR对象

今天帮朋友写了一个简单的ajax的demo,发现了一些东西,决定写一篇文章记录一下,避免以后挖坑。

创建XMLHttpRequest
通常
    function createXHR(){if(XMLHttpRequest){return new XMLHttpRequest();}else{return new ActiveXObject('Microsoft.XMLHTTP')}}

这一段js代码来源自w3school,用于创建兼容各浏览器的XMLHttpRequest对象的含义:
检测客户端是否有XMLHttpRequest,否则使用ActiveXObject

关于XMLHttpRequest对象,IE5是第一个引入XHR对象的浏览器,在IE5中,XHR是通过activeX对象实现的.因此在IE中可能遇到三种不同版本的XHR对象,MXSML2.XMLHTTP,MXSML2.XMLHttp.3.0和MXSML2.XMLHttp.6.0。

IE的坑

为了向我们伟大的IE浏览器“致敬”,我们必须添加额外的代码进行创建
以下代码适用与IE7以下的情况:

function createXHR(){if(typeof argument.callee.activeXString != 'string'){var versions = ['MXSML2.XMLHTTP','MXSML2.XMLHttp.3.0','MXSML2.XMLHttp.6.0'];var i len;for(i = 0;len=versions.length;i<len;i++){try{new ActiveXObject(varsions[i]);argument.callee.activeXString = varsions[i];}catch{<!-- 跳过 -->}}}return new ActiveXObject(argument.callee.activeXString);
}
完整走一遍

但往往我不会考虑这么多,能看懂前面的函数也是很不容易了,再让我写出来,我的天!当大家和我这么懒的时候,可以直接使用第一份代码,也就是w3school那一套代码,我们使用原生的XHR对象进行创建。
当然,我们这里也给出完整的代码。

function createXHR(){if(typeof XMLHttpRequest != 'undefined'){return new XMLHttpRequest();}else if(typeof argument.callee.activeXString != 'string'){var versions = ['MXSML2.XMLHTTP','MXSML2.XMLHttp.3.0','MXSML2.XMLHttp.6.0'];var i len;for(i = 0;len=versions.length;i<len;i++){try{new ActiveXObject(varsions[i]);argument.callee.activeXString = varsions[i];}catch{<!-- 跳过 -->}}return new ActiveXObject(argument.callee.activeXString);}else{throw new Error("没有XHR对象存在");}
}
用法
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>demo</title>
</head>
<body><form><button onclick="returnText();return false">登陆</button></form><script type="text/javascript">function returnText(){var xhr = createXHR();xhr.onreadystatechange = function(){if(xhr.readyState == 4){if((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){alert(xhr.responseText);}else{alert('获取失败'+xhr.status)}}}xhr.open('get','demo.php',true);xhr.send(null);}function createXHR(){if(typeof XMLHttpRequest != 'undefined'){return new XMLHttpRequest();}else{return new ActiveXObject('Microsoft.XMLHTTP')}}</script>
</body>
</html>

创建好XHR对象只是第一步,才是我们各种操作的开始。

open()

open()函数会启动一个请求,但并不是发送,可以看作办事之前的准备。
它接受三个函数:

open(get/post,url,false/true)
  1. 请求类型:最常用的就是get和post
  2. 路径:就是要请求的操作的文件的url
  3. 是否异步

我们这是使用的是get方式,因为我们并没有要发送的数据。 异步我们选择了true,无意中发现在使用false时候,火狐出现了警告:

主线程中同步的 XMLHttpRequest 已不推荐使用,因其对终端用户的用户体验存在负面影响。

具体需要再了解。

send()

自然而然,准备好了就要发送,send()只接受一个参数,那就是要发送的数据。我们使用的是get,没有数据,那就null好了。

php

因为这篇文章主要是讲ajax,所以php部分我只用了最简单的echo

<?phpecho '成功了';?>

这样就能在接受到请求后返回一个字符串。

回调函数

我们怎么样才能直到php文件将数据处理完,返回给客户端了呢?
这时候我们就需要监测XHR的readyState属性。先介绍以下readyState属性:

  1. 0:初始化未完成,未调用open()
  2. 1: 启动调永了open()函数,但是还没有send
  3. 2:发送,调永了send()函数,还没有接收到响应
  4. 3:开始接收,接收到部分的数据
  5. 4:完成,接收到了全部数据。

所以在上面的函数中我们可以看到,我们去监测readyState属性,等到等于4的时候,也就是数据接收完成之后,我们开始对数据进行处理。

小结

这是一个手动创建XHR对象并使用最简单的方法。以后回继续进行更新。介绍其更详细的用法。

转载于:https://my.oschina.net/nikolan/blog/719325

http://www.lbrq.cn/news/2808451.html

相关文章:

  • 上海人才网官网招app优化推广
  • 山东最新通知今天山东公司网站推广优化
  • 做一般的公司门户网站投资额企业网站seo案例分析
  • 福州网站建设设计北京seo技术
  • 网店装修网站百度公司招聘信息
  • 网站建设行业增长率哈尔滨网络公司
  • 找大学生做家教去哪个网站找好新品推广计划与方案
  • 深圳网站设计权威乐云践新目前引流最好的平台
  • 太原网站建设费用seo优化的优点
  • 门户网站开发过程视频外贸快车
  • 建设银行网站个人客户seo优化网站优化排名
  • 医院网站后台模板seo有名气的优化公司
  • 南京建设工程质量监督站网站做网络推广怎么收费
  • 可在哪些网站做链接dw如何制作网页
  • 设计干货很多的网站优化疫情政策
  • 网站做301好不好百度收录入口在哪里查询
  • 商业网站建设教程乐陵seo优化
  • 深圳政府门户网站设计亮点网站优化公司上海
  • wordpress 国人原创百度seo关键词
  • 自己做网站用哪个软件百度教育app
  • 网站建设设计服务宽带营销策略
  • 有什么做旅游攻略的网站今天最新新闻国内大事件
  • 培训中心网站建设论文aso优化服务
  • 幸运28网站开发竞价推广平台
  • 建设网站坂田seo 专业
  • 厦门做网站建设seo兼职平台
  • 广发证券 网站谁做的360网站排名优化
  • 电子商务系统 网站建设长春网站提升排名
  • 网页和网站做哪个好用网站seo外包公司有哪些
  • 网站关键词可以做几个广州疫情今天最新消息
  • 云原生俱乐部-k8s知识点归纳(7)
  • BurpSuite 1.4.07.jar 怎么使用?详细安装和抓包教程(附安装包下载)
  • yggjs_rlayout使用教程 v0.1.0
  • k8s下的网络通信与认证
  • Multi Agents Collaboration OS:Browser Automation System
  • 直流无刷电机旋转原理