00:03
好,我们接下来看啊,那么如果说想实现我们刚刚提到的就是啊,我希望在用户点注册之前呢,就已经告诉我这个用户名到底能用不能用啊,那么像这个需求,我们需要用到一个叫做架这样的一个技术啊,它是啊基于我们的javascript来去写的,所以说呢,我们在讲完JS以后呢,我们顺带的就紧接着我们就要去讲我们的JA,好来看一下呃贾它是这么几个单词的一个缩写啊,就是它这几个单词的一个简称啊,就是异步的javascript和X ma啊,异步的一个javascript和这个X ma简称为啊就是我们的JA。OK,那么它是干嘛的呢?它的意义就是不发生页面的跳转,异步的载入内容并改写页面内容的一个技术。啊,异步的,注意一定要强调是异步的,或者说我们可以简单的理解为它是通过一个JS上服务器发送一个请求的。
01:11
就是什么意思呢?给大家去解释一下啊,啥叫做异步,啥叫做同步,这个大家能明白吗?理解不理解不理解啊啊,你现程中没讲过同步异步吗。讲讲没讲过,讲过讲过吧,你多线程你必须得去研究他们这个同步跟异步啊,那你解释一下什么是同步,什么是异步啊。比方说我有五个线程啊,同步的五个线程它怎么执行啊,同时同步就是同时是吧,是这样的吗?啊怎么执行啊。
02:01
孩子在重返80。忘了。啊啊,那我问你呃,什么情况下会有这个线程安全的问题啊。什么情况下?哎,我听到有同学说多个线程同时访问一个共享资源的时候,是不是啊,OK,好,那你就来想多个线程同时访问这个同时它表达的是个什么意思啊。这个有确定性吗?没有确定性的对吧,就是呃,这个的话,其实你这个同时执行几个线程呢?这个我们不敢确定,为什么呢?因为他跟你的操作系统是有关系的,大家应该都知道你们这个操作系统什么四核八线程的,听说过这个概念吧,对吧?那你知道这个四核八线程什么的,什么几线程几线程,这是什么意思吗?
03:04
啊。这个也不知道吧,啊,那你知道这个四核八线程快呢,还是说这个单核的快啊,这个知道是吧,数字越大越好,对不对啊。是这样的吧,OK,其实他表达的意思是什么?就是我可以同时支持你去执行几个线程,那么我们学过线程的我们就知道,每一个线程的其实都是相当于去完成一个任务。对吧,那如果说哎,我有十个任务,那我就需要有十个线程去走,假如说这十个线程它需要排着队一个一个线程去执行,那么这个时间是很长的,假如说我同时支持你去执行八个线程,那么这个时间是不是很快了?嗯,能明白这个意思吗?OK,好,但这个扯扯的有点远了哈,我们回来说这个同步异步,什么是同步呢?你就记住它就是排着队的一个一个执行,这叫做同步,就是我在执行的时候,其他线程其实它都是在一个等待的一个状态。
04:07
主色嘛,对吧,你都是在等待的一个状态,为什么?因为我家锁呀,OK,那什么叫做异步呢?就相当于我们两个是互不干扰的,我干我的,你干你的,你干你的,这叫做异步的。明白这个意思吗?哎,我干我的,你干你的,我们两个是一个异步的一个效果啊呃,这个大家下去以后你们再去看一看,明白吧,这两个概念还是比较重要的,重要的啊,特别是这个县城里面的这个概念是特别重要的理解吧,下去以后你们好好看一看啊啊那么现在的话,我再来给大家去解释一下,它这个地方所谓的这个同步处理,异步处理是什么样子的呢?啊,比如说我们现在说同步处理,同步请求的话呢,就是相当于什么意思啊,哎,我在操作页面的时候,哎,比如说哎,我在操作页面的时候呢,它这个页面中我触发了一个事件,然后这个事件呢,向服务器发送的一个请求,那么只要这个请求一往出发,在这个请求还没有响应回来之前,这个整个页面它都是锁死的,什么叫做锁死的呀?就是你是操作不了的,明白吧,为什么呀,因为你们是一个同步的,你必须得等着这个请求处理完。
05:21
全程响应也结束了,那么你才能做后续的操作,这叫做同步的,理解这个意思吗?那什么是异步的呢?来比如说还是这个样子的,我在页面里面呢,我做了某一个操作,但是呢,触发了,它发送一个请求到我的后台服务器了,如果你是异步的请求的话,大家注意这个请求它是异步的话,那么你发送你的请求,我照样去操作我的页面,我们两个是互不干扰的,就叫做异步的。能明白这个意思吗?所以说现在我们想要实现的这个效果就是什么呀,我输完用户名以后,你就帮我去校验这个用户名能不能用,然后呢,我是不是要去接着去写下面的这个表单项了,对吧?因此我们就要用到这个异步的一个这个请求啊,所以说呢,这一段文字下去以后,大家可以自己仔细的把它去读一读,明白了吧,我就不再带你去读了哈,你就把这个思想理解了,其实这个东西我们就能去做了啊,接下来给大家去解释这个异步请求对象,它叫做xm http request,它是我们adjust中非常重要的一个对象,所有的异步请求的操作都要基于这个对象来去完成,也就意味着没他你是完成不了一补请求的。
06:35
明白了吧,记一下哈,叫做X well http request对象啊啊,那么这个对象呢,它主要是用来封装我们的请求数据,然后呢,像服务器发送请求信息啊等等一些都是来通过他做的,但是啊,大家注意,我们稍微需要注意一下,就是这个对象呢,它并没有成为标准。理解吧,并没有成为标准,那么如果你不是标准的话,也就意味着各大浏览器是可以对这个东西啊做不同的一个实现的,所以说我们在获取这个对象的时候,我们就要去区分我们这个浏览器了,明白吧,但是对于我们现在来讲的话,其实也就没有太大的一个关系了,因为什么呢?因为现在主流的一些浏览器呢,诶,它都支持了该对象了,但是一些比较古老的像这个IE6 ie5现在还有人在用吗?没了吧,诶它就什么呀,它的这个创建方式呢,有一些小小的区别,所以说呢,我们在写的时候呢,就要去写出一部分这个兼容性的代码来,比如说你看像这个大部分的浏览器呢,都支持我们通过这种方式来获取我们的异步请求对象,但如果说这种方式获取不到的话,那么可能你用的就是IE5或者是IE6了,那么你就要通过IE6的方式是这么来获取的,IE5的方式是这么来获取的。
07:58
对吧,你就要去写出这个兼容性的代码来啊,但现在的话基本上已经没人再去使用。
08:05
IE5IE6了,对不对啊,所以说呢,对于我们来说的话,这个已经不是大问题了,然后就算有人再去使用这个IE5IE6,我们也不用担心,因为什么呀,因为我们最终要使用的是一个叫做JA query这样的一个框架啊,使用JA query这样的一个javascript的框架,它已经帮我们解决了浏览器兼容性的问题了,明白这个意思了吧,所以说我们只需要有知道有这么回事就行了,然后具体我们在写代码的时候,你也不必要这么啰嗦,这么麻烦了,你就直接通过这种方式来去写就行了,它已经支持我们大部分的浏览器了。听懂了吧?OK,那说到这个地方呢,我们简单的聊两句是吧?呃,听说过这个兼容吗?听说过兼容是吧?啊,虽然说没没做过,但是呢,我们应该是听说过的哈,啊,其实对于我们来讲还好,因为我们主要是处理数据的,我只要把数据给你,然后剩下的就是什么呀,这个前端的这帮人去干的事儿了,是不是啊,那基本上的话呢,如果公司小一点啊,可能你也得去干,对吧?啊,如果公司再少一点啊,公司就两个人,除了老板就是你是吧?从前到后全部都得你干啊。
09:24
啊,你别笑啊,真有这样的公司?真的啊,真的有这样的公司,除了老板就是你是不是啊,OK,那你就是公司的二把手啊啊啊,有拥有一票否决权是不是啊,来听我说了哈,呃,这个兼容性的这个问题大家注意,其实我们解决兼容主要解决谁呀?主要就是解决IE。明白吧,啊,这个我们偷偷的说是吧,主要就是解决这个IE的这个兼容性问题啊,如果说大家身边有这个干前端的人啊,你可以问问他啊,就让你头疼的是谁,就是IE,因为这个这哥们是吧?啊,人家是这个巨头是不是啊,微软巨头是吧,我就不按照你的标准之后我就希望制定制定我自己的这个标准。
10:15
对不对,但是现在的话还好了哈,他也这个大部分的都按照这个标准去做的,但以前的话确实是一定要去考虑IE,我写的好好的代码,我在谷歌,我在火狐里面测试没有任何问题,只要往IE上一放,会有各种问题。对吧,就是要解决这样的一个问题的,明白了吧,OK,那么像这个IE的话呢,现在这个,呃,其实大家可能没有接触过啊,如果说你以后去做一些这个,呃,政府机关的这种网站,那么它基本上都是IE,而且人家网站上面标的很明显,必须要通过IE打开。真的是啊,你们可以去以后你们接触到这个政府机关的这种网站人,人家就用IE,那没办法是吧?啊然后还有一个这个笑话就是什么呀啊,一个人问这个处着你们公司是怎么给客户解决这个兼容性问题的啊,就是一个IE兼容性问题的啊,然后这个人给出了一个非常完美的答案啊,没有任何毛病器啊,我给他们装了一个谷歌浏览器,然后把图标换成了IE的是吧,完美解决是不是啊好了哈,我们就简单的这个吐槽吐槽就行了啊啊,这个问题我们不用担心了,听懂了吧,但是我们就知道有这么回事啊啊啊,那我们接下来呢,就是知道了这个对象了,一会儿呢,我们需要去获取它,那么有了这个对象以后呢,我们需要关心一下它对象的一些方法,比如说像这个open方法啊,就是打开啊。
11:51
那么它就是相当于我要去打开一个请求了啊,就是在这里面的话,我们需要给它设置上你的请求方式,你的请求URL地址,以及你是同步还是异步,它有两个值,一个是true,一个是false,那么基本上我们用都是用什么异步的啊,你很少说你写了半径代码了,你还发送一个同步请求,那就没意义了啊,还是使用这个同步还是还是使用这个异步的啊,这是其中的一个方法啊,另外一个呢,是一个散的方法,那么这个散的方法呢,就是发送请求,那么注意了啊,它是给服务器端发送一个请求,可以接收一个参数。
12:28
好,那么这个参数呢,它是用于设置我们的请求体的,但是注意这个地方我们需要区分一下,如果是get请求,那么这里面啥都不写,如果是pass请求,那么我们需要把请求参数写到这个里面啊,这个后面我们给大家有这个具体的代码啊,让你去看一下啊,另外一个这个是了解性质的啊,设置我们这个请求头就是暂时我们用不上啊,暂时用不上,但是呢,对于POS请求的话,我们也得去用它啊,OK,然后还有一些这个对象的属性,我们大概去介绍一下,一会再写代码的时候呢,大家再来关心他了啊,有一个ready state,就是来描述我们这个对象的一个状态的,它总共呢有五种状态,但是呢,我们最关心的就是第五种状态,就是我判断他请求已经处理完毕了,响应也已经就绪了,那我就可以来做后续的处理了,像前面这几种状态,我们其实是用不上的啊,一般我们用不上啊,那么大概有哪些状态呢?大家也可以自己去看一看啊,我们主要关心的就是四这个状态。
13:28
然后另外一个还有这个status,就是我们的响应码,那么对于响应码来讲的话呢,我们主要关心的是200,因为200它就是一个成功,如果说出现了比200更大的了啊,比如说出现了404了,出现了这个500了,对吧,出现了这个405了,那么像这种都是出错的啊,这个都是有问题的了,所以说这个地方我们主要关心的是200,好,再一个有一个on red that change,那么这个是用于监听的,监听谁啊,监听你这个ready stage。
14:00
我来鉴定你这个状态的改变,假如说你变成四了,好,那我就可以做后续的处理了。然后接下来response text用于获取我们的响应数据,Response xm也是用于获取响应数据,但是xma这种方式我们已经几乎不用了,因为我们有更好的一个技术叫做Jason,这是我们后面要讲的,通过它来去处理。OK,呃,那么这就是对我们这个异步请求的一个简单介绍,那么接下来呢,我们就来具体的去使用一下啊。
我来说两句