00:00
后台代码写完了,下面就前来了,那么前台我们说从流程上来讲就是两件事儿,第一件事发请求,第二件事处理响应。发请求有参数,收集参数,需要做表单验证,做表单验证知道吧,那处理响应再回调函数里边处理。基本上都是这么一个固定的流程,好,首先大家我们来看看什么时候发请求,那根据需求说,用户首先选择要删除的市场活动。选完了之后一点删除按钮就可以。就可以这个什么发群流了,所以我们下边要做的事就是给删除按钮加个单击时间就行了,所以下边我们来找找,给删除按钮加个单击时间来找一找,那删除按钮肯定在市场活动主页面上找一找删除按钮。然后呢,我们来找找删除按钮,删除按钮应该在下边这些模态窗口不用管它默认不显示,那往下找,然后呢,这模态窗口都不用管,找删除按钮的就这个地方。这这在这了,大家看这是创建按钮,这是修改按钮啊,这是修改按钮,诶这个地方放哪去了,这个地方。
01:10
啊,这是修改,这是删除关钮,知道吧,给他加个单击时间就行了,那加单机时间我们在入口上边统一加,加的话给他一个ID,这个ID的名字,名字你随便起了键名之意,我就叫delete activity8删除市场活动的按钮,知道吗?然后呢,大家我们给它加试件就行了,那加过来一个试件吧,这个地方来继续拉,然后呢,我们这个地方给删除按钮加试,都是在入口函数的统一讲,然后呢,这个地方来一个给给删除按钮添加,单击事件。那加单击事件这个地方来看,是用我们以前那种传统的那种方式,还是用on。那现在你要考虑了是吧。
02:02
用哪一种方式加?因为以前你就学了一种加试卷的方式,直接用哪一种就行了,现在我们又给大家讲了一个on这种方式,那这种方式这这个地方用哪一种方式加。从理论上讲,当然用哪一个都行是吧,但你这个要用哪一个加比较好呢?有哪一个加给这个按钮加社交。那我说到底用传统方式还是用啊,你看这个元素是不是是不是能够确保它是固有元素,能不能确保。对,是不是可以啊,可以,那就传统的方式就行了,所以但你说你你只要理解了,你只要理解了,你就不用怕知道,你不用怕说错知知道吗。这是我们这样,所以大家我们这个你以后到公司里边也是这样,知你只要理解了这元素,你就大胆的写就行了,他不可能出出错的,因为语法都是固定的,这确它不可能出错,所以用传统战法,传统的战方式,我首先得选中那个元素,拿到目标元素的解块的对象,ID选择器直接选就行了,知吧。
03:15
然后下边调视角函数,这种方式比较简单,当然你说老师我就用on特,对,当然也可以了,奥数方不是麻烦吗?嗯。然后呢,大家看这种加值,然而调事件函数,然后呢,下边这个转开个范式,那这个发生出,我说当这个按钮上面发生单击事件时候,会自动触罚这个函数,那我们就可以在这里边写我们代码了,写我们代码干什么?我们说两件事,第一件事发请求,第二就处理响应,发请求有参数,收集参数。手机参数,那手机什么参数。对,就是选中了那些市场活动的ID,那选中市场的ID的话,那如何收取呢。
04:02
那对啊,我们选中的市场中啊,选中的每一个市场中的ID是不是都在前面拆个包上面是不是都已经绑定了,比如一会我们查询的时候绑定了,绑定哪绑定哪,差个boss y6属性上了。所以我只需要获取到所有选列表中所有被选中的拆料包子他们上面绑定的Y6属性值就行了。把这些属性值都拿到,然后以这种字符串的形式发到后台就行了,知道吗?所以那下边我要获取的就是获取什么?获取列表中所有被选中的check box。然后他们上面绑定的Y6属性值就行,那要获一万六水,首先再把那拆boss先先拿到,先拿到就行了,知道吧,那拿到的话,那我先选中那些开头boss知道吧,那下边我首先选择就选中来获取吧,获取列表中所有啊,所有被选中的t boxs,对啊对,列表中所有被选中的插包,那如何获取列表中所有被选中,被选中的插包S。
05:14
我们已经获取好几次了是吧?对获取首先获取列表是不道对列表叫什么对提包,他下边的差克boss对input,然后呢,这个地方来一个加一个T,然后呢,这个地方来一个,这个什么叫拆boxs,对拆box,然后呢,这是列表中所有的拆boxs,对,我要获取被选中的呢拆T,这样的话我就获取了列表中所有被选中的拆boxs,定一个变量来接收它,我这个地方就叫check,这个变量肯随便写啊,那我这个地方就叫check ids box这张我就获取说列表中所有被选中的Bo。那这是大家都知道,这是个解块的方。在这个对象里面包含着一个数组,这个数组是由那些所有被这个选择,被这个选择器选中的那些元素都不对象所组成数组。
06:09
知道吗?每一个解化的对象都包含一个速度。它那个数组就是有那些被选中的元素,盗墓对象是只能数组。那我们通过这个数组,我们就可以是就可以做个表单验证,做什么表单验证,咱们需求上面说了,删除市场活动的时候,你点删除按钮删除市场活动啊,删除市场活动的时候,每次至少要选一个,如果你点删除按钮一个不选,假如你这个地方一个都不选一点他不让点,要给他提示,为什么你就是删除记录的一个不选没意义,请求都不让你发,你发请求除了加重后的负担也没意义,所以我们就看他是不是都选中了。那通过这个什么,通过这个数独,它包含里这个盗墓对象里边,这个解块对象里边包含了个数独,我就能够判断它是不是选择了市场活动,那如何判断是不是选了,是不是就看这个解块的对象里边包含那个数组,它的长度啊,如果长度等于零说明什么?
07:15
一个都没选是吧,那就来看看吧,那来看那个数组的长度,数组长度怎么获取,对size子大家我们推荐大家用size,但LS也行,LS但是个极个别的浏览器,LS不支持,所以我们推荐的能用size都用size,然后呢,我们这个拿到那就看它是不是等于零,看它是不是等于零,怎么对等,是不是等于零,用个双等号,然后呢,如果等于零,那这个地方来给他提示一下,告诉他请选择,请选择要删除的这样的市场活动知。那提示完了之后,后边代码都不用执行了,直接来一个对他上转就行了,行了,这时候我们这样,那如果它的长度不等于零呢,那不等于零,那这里边肯定进不来,但他肯定选了。
08:07
选来进不来进不来继续往下走,往下走干什么呢?提示对往下走是不是按理说就就要提示一下了,提示看弹出那个确认窗口了,是不是就要准备向后台发请求了,发请求那时候到底什么要什么,要不要要不要这么删除是吧,可以提示弹出来那个提示框是吧?可以弹出提示框,我们一会儿再谈吧。先不弹提示框,一会儿再停,最后再停了,这样的好,这样的话,那下边的话,假如不弹提示框,是不是就就准备向后台发引流了,对向后台发,那向后台发起流,你你得把那些参数准备好啊,这些参数在哪呢?都在这些被选中的拆个包所里边呢。那被选中拆包网络那些ID都在这拆包s value属性上面呢。那你要获取什么?所有获取到的这些check box上面Y6属性只是绑定那个ID。
09:02
获取那些ID去了,那如何获取那些ID?对,是不是要遍历这个数组了。获取每一个拆boss上面的ID,那你要遍历这个数组了,遍历数组怎么遍历?对,怎么变了,我们说在页面里边有两种遍历方式,一个用什么解宽位那个do符号,点一那个函数是不是可以变利啊,还可以用个GSTL标签库是不是也可以便利啊,这个地方用哪个便利啊。哪一个监视条便利啥子?利共享数对做用域里边的数据的是吧,我我们这个数据在作用域里边吗?在不在,不在就不能用GSGL标签库啊,大家记住GSTL标签库是结合EL表达式用的,EL表格式是获取作用域里边数据的,所以你要变在JS页面里边,如果变离作用率里边的数据用JS条。
10:09
知道吧,如果不是变利GS作用率里边数据GSTL就获取不到数据了,所以说呢,不能用GSTL,像我们这个地方获取GS变量呢,变利GS变量呢,用什么用解宽的点一次函数知道吗?点一次函数。是为什么?因为G1么解query,它本身就是什么解query本身就是GS代码便利,GS变量就用什么解query函数。块函数,那用解块的函数,哪一个函数对do符号,点each点二,然呢,这个这样就行了,知道吧,然后的话,这个一次函数两个参数,第一个参数表示什么?对遍历的对象,你遍历是哪一个数组,把它写到我就便利,这个解块的对象里边包含了那个数组,就把它写在这里边就行了,它就就自动遍历了。下面第二个函数呢,对方个人,这个函数表示将来他从这里边每取一个元素都会执行一遍这个函数,在这个函数里我们说两个参数,这两个参数能用到就写,用不到可以不写。
11:21
啊,因为它是弱类型的语言,解块JJS是弱类型的语言是吧?啊,有参数用不到你可以不写,用到就可以写这两个参数,一个是对引,表示变利的下标,从零开始,依次往后增加,直到整个数组的长度减一,下边还有一个什么对循环变量obg吧,从这边每拿一个元素放到这里边,对放到这里边干什么?执行循环执行这个函数的时候,我们可以获取每次变量这个数据,当然里边是不是还有一个什么对,内置对象表示跟这个obj一样,都是循环原的,从这里边每取一个元素,既放到这里边,也放到这里边是吧?啊,那么放在这里边,在这里边我们想获取每次变量这个数据我就直接获取到了啊,知道吧,那么这两个循环变量将来用哪一个用哪一个都行,我们习惯上如果复杂的数据用它,简单的数据用它,知道吧,那我们这个地方每次获取的那个元素都是一个拆boxs的do姆对象,用数组上每个元刀姆对象,我要获取刀墓对象Y6属性就获取一个属性,我们可以用this。
12:30
当然你用它也行,但用this我们这个吧,更简洁一些,那么这俩就可以不要这样的话,大哥我就可以什么从这里边每拿一个到解块这个check boxs选中的check boxs盗墓对象都什么执行一遍这个函数,执行函数的时候,在这个函数里边V就代表每次变论盗墓对象,拿到盗墓对象了,我想拿到他这个value属性上面绑定的ID值咋哪对点value属性就行了。这个地方大家你千万不要这么想啊,带小括号是表示函数,不带小括号表示属性,知道吧,它这个Y6是属性,不要带小报告知道吗?这样的话的哈,每取一个盗墓,这个盗墓对象都获取一个ID值了,这就ID值,这个ID值拿到之后怎么办呢?
13:19
要发到后台,如何发到后台,以这种字符串的形式发到后台,那以这种字符串的形式发到后台,那你要把你这个ID值拼成这么一个字符串了,怎么拼成这么一个字符串。对对,那每一个值拿到了值就是参数值,前面是不是每一个值都给它前面加一个参数名啊,参数名都叫ID,那加一个ID,那每一个都拼成一个字符数,然后呢,再取一个又拼组又拼成字符数,中间用什么按照符号隔开,然后把它们放到一个大字符串里边,把大字符串发到后台就行了,我就准备这么来做了,好怎么做呢?这样每次变成一个ID值都给它们拼成一个,拼成ID等于一个参数名那种形式,那怎么拼,就直接这么拼,前面加一个字符串,这个字符串对ID叫参数名,等于后边获取的这个值就是参数值。
14:16
每变成一个盗墓对象,拼着这么个小字符,下次么又变成一个盗墓对象,又拼这么个小字符。那这种什么小字符串和小字符,这中间要加一个什么and的符号,用and的符号每变出来一个都拼成对不对,然后把他们每一个小字母串拼成一个大字符串里边,那那个大字母串什么样子,在外边先定一个大字母串,大字符串这个名字你随便定义,我就叫ids了,一开始这个空的每变成一个,当对象拼成这么一个小字符,这把这个小字符这拼到这个大字符这里边,那如何拼成大字符这里边给加等于。这样遍历完之后,最终就生成这么一个字符串,ID等于让呢and ID等于让呢AND1直往后边拼,拼到最后是吧?来个ID等于啊,最后是不是加了一个and的值啊?答案,拼这个字符串了,我们就可以把这个字符串发到后台了,那这个字符串发到后台,显然它是不是多了一个什么按照符号是吧,其实多了一个按符号,其实不影响咱们发,发这个参数,你你加上他也正常的发懂。
15:28
啊,但是我们说,但是从技术上来讲的话,加上它总是不好的,是啊,它不重要,这是不是一个合法的这么一个这个这个参数的这个字符串,那最后要把这个什么按符号去掉,那如何去掉呢。对,那这个的话有两种方式,第一个在每次拼一个小字符串的时候。前面这些拼的时候,后边都就都加一个安顿符号,最后一次大看是不是这个an符号可以不要了,可以不要了,我就判断一下每次变出来这个是不是最后一个,如果最后一个后边不带它,如果是,如果不是最后后边都带这样就行了,那如何判断这次变成这个Z4是不是最后一个呢?
16:13
怎么判断?这个对象专门赛。谁小于谁小于那个长度。Inex,对,是不是得用index了,对,得用index,那用index咋整?这后边你这个地方也得写了,知道吧,用ex判断么?这个inex是不是等于这个数组的长度减一,是不是这样么?对,是,是长度角一,因为它是从零开始往这个下标,知道吧,所以但是这样的话就显得比较麻烦了,我这我之所以用Z就不想写这俩参数,所以这样写比较麻烦了,所以我们不准备用这方式,但用这种方式可以可以肯定是可以的,知道吧,那我们怎么写呢?这样我可以什么我就什么,我不管是不是最后一个,全部都在后边加个按照符号,对拼完之后把这个按的符号给它截掉就行了。
17:06
截取字符串就行。那如何截取字符串呢?对对,截取字符串,在GS数截取字符串,大家也要会听,对这个吗?JS中截取字符串,这些都是大家以前学过的语法,那截取字符串咋截?对,你比如说他看我这个地方来一个截取字串,我们举个例子,来一个str,等于随便来一个啊知道吗?随便来一个,我想截取Z串,它有这么这个,在GS这有这么一个,有这么两个函数都可以截取,这都大家以前学过的,我简单给大家写一下哪一个sub ST,它的语法是什么样的,对inex表示什么,对。
18:04
对,从下标是他的字符开始结束下标。为它的字符开始开始截取么?截取几个字符呢?是不是蓝色个字符啊字符,这就是我们的结果知道吧,就是这个函数,你比如说大家我这我这样截,假如我截这个字符串,这个下边注意的下标是从零开始的吧,然后我这种叫sub s spr,我就我就想截这个字符串,那截的话,假如我从。二截,截取三个字符,最终结果是几?截取到的字符串是是是什么样的字符串?对,下标012,是不是从它这接它是B区间,哎,截取几个字符三个IG,哎,是不是这样子,最终结果是同哎,这是我们截取。
19:10
就这这种方式是还有一个,还有这个函数也可以截取,这都是大家以前学过的语法,Sub是吧,String是吧,这个它的语法是这种index index,然后呢,End index,它是从下标是start index字符开始截,然后呢,截取到对下标对是N的inex的字符为止。得的中间得到的字符就是我们需要的,我们这个地方再来它ST2.substring,然后你比如说我还是截取下边二到三的,截取的结果是什么?
20:01
对,IO,然后这俩函数用哪一个都行,但是你哪一个都要会。你以后到工作上都有可能遇到这种,那我们这个地方用哪个都行,假如我用这个吧,用这个我想把最后一个截掉咋结。那就接这个IDF。对,从下边是几个字符开始截,对零第一个我都要截到,截几个字符对,就把最后一个截掉,那叫什么?对,来整个字符串的长度减一个就行了,那整个字符串长度怎么取,哪一个对,Lengths是吧?哎,这个么,Lengths lengths大家注意它不是函数,它是属性是吧?你别后边加小括号了,属性不带小括号。它是属性,那你说老师我能不能用size知道吧,也可以也可以,他俩都一样知道吧,那我们这个地方,那你说老师你这个地方咋用LA了是吧?对,这是字符串,对,这是字符串是吧?我们以前推荐用塞子的时候是啥对是负九对吧,所以这些大家要知道,那长度减减一是不是这样呢?这样的话大家我们就得到最终呢,得到这么一个字符串,最终得到一个字符,这样一个字符串把最后一个截掉了,得到之后把它再反过来复制给这个这个什么。
21:36
这个变量就行了,这样这个变量就把最后一截掉,截掉之后我们所需要的这么一个什么,这么一个字符串要发到后台,这个字符串就拿到了,拿到之后是吧,拿到之后怎么办呢?下边是不是要向后台发请求了,那向后台就可以发送请求了,表单也都验证了,数据也都准备好了,就可以向后台发请求,那向后台发请求,那这个地方我们什么根据我们的设计应该发个异步请求,为啥异步请求我们前面昨天给大家分析了,知吧,因为做的是局部刷新知,所以我们想发起发进球一步请求,阿贾克斯这行了。
22:13
在这里边传了一个对象,传了一个对象,然后这个对象里边有uo,然后呢,这个是uo,这个UR就表示你发到哪去,把这个群那发到哪,我们就发到这个CTRL边,把这ctrl ul拿过来就行了,CTRLC,然后呢来找到我们这页面,这个页面,然后呢写到这就行啊,然后呢,下边把我们的参数发过去,这个参数来一个备份,然后呢,这个参数就是这个字符串,这些参数都在这个字符串里边的,ID等于ID等于都在这个字符串里边。这是我们说的这哎这个地方有同学就就就就就有疑问了,是吧?老师以前我们写向后台发参数的时候,都是写个大框,大框是表示什么对象JS对象,那这里边都写什么对ID的参数名,然后呢参数值,然后呢再来一个参数名,参数值,然后呢,是不是后边还有很多的以前都是这么提交参数。
23:19
那你现在怎么提交这么一个客户。这个参数它的值是这你咋提交这么一个参数到后台拼成这种字符串了。你咋这么穿呢?可不可以这样抄,可以可以以前写过这种吗?地址对,地址栏就这么写,对,就这样在解花在阿贾克斯里边以前写过这种代法吧。对,没有是吧,其实这种方数也能也可以参参参数参数名参数值,按照参数名参数值也可以这么,然后我们这个地方给大家简单总结一下,对阿贾克斯向后台发请求的时候,要向后台提交参数,提交参数都是在对塔这个属性这边向后台提交参数。
24:04
那这个data后边这个参数其实有好几种格式。哪好几种格式,就是这几种格式,我们给大家简单总结一下啊,这对吧,这个地方是这样,阿贾克斯向后台,后台发送啊请求时,请求时然后呢,可以通过通过这个data,然后呢,提交参数,提交参数,那这个这个data的数据那格式。可以有这么几种格式,有三种格式,三种格式它后边可以写三种格式的数据都能向后台发起,那就提交参数,都能向后台提交参数,哪三种格式第一种是大家最常用的一种,哪一种就这一种,对一个大括号,大括号在JS或者在杰森里边都是表示对象,对象里边有参数,对参数名,参数就是属性名,属性值在我们这个就是参数名,参数值。
25:08
你比如说他有个参数名参数值,然后呢参数名参数值,然后呢,后边还有很多知道吧这种形式,这是我们以前用的最多的,通过GS对象向后台提交参数知道吧这种知,那这种方式我们说它有一个特点,这有个特点这种方式我或者说它有个局限性,它什么样的局限性?他只能向后台提交那些一个参数名对应一个参数值的,这种情况他不能向后台提交一个参数名对应多个参数值。什么意思?就是说你比如说我有个参数,这个参数假如都叫知道吗?假如我在,假如我有了一个K2V2了,我再向胡子提交一个K2。
26:00
V22就是一个参数名对应多个参数值的,这种情况用它提交就提交不了。那你说我就这么写的吗?就这么写,他到后台接收的时候,接收这个K2这个参数的时候,它只能得到V22后边这个参数参数值,把这个参数值覆盖了。你只能提交一个,提交过去一个值,就这种情况啊。这种情况就这种格式的数据,它叫什么?它的局限性就在于什么?只能向后边提交,只能向后台提交一个参数名对应一个参数值的数据。你说不能向后台,反过来就是说不能向后台提交一个参数名对应多个参数值的数据啊,你要想一个参数一个ID对应多个值,这个你不能用它,为什么你最后最后那个值都会把前面值给你覆盖掉。
27:15
你只能提交过去一个值,知道吗?所以这它有局限性。那个以以前我们都是这么提交,以前你那些所有的参数都是一个参数名对应对应一个参数值。以前你做的所有的操作都是一个参数能对一个参数数,不是说一个参数能对应多个参数数,知道,所以大家看我说这种方式,这是它的局限性吧,那你说老师我就想提交,向后台提交一个参数名对应多个参数,就像我们这个什么一个ID对应多个值。那你就不能用它了。那你说老师怎么不用,不能用它就是因为如果一个参数没到最后一个值,会把墙面覆盖。但你要是提交销交后提交多个值,你要你要交后台提交这么一个值,你要这么这么这么提交了,他就提交过去了,他只能提交一个知道总你看你比如说他ID,假如说一个值ID一个值另一个值吧,这个怎来个叭叭叭吧,假如还有别的你就提交,他只能把最后这个提交过去,别的给提交过去。
28:21
为什么后边都叫ID值,都叫ID这个参数名的值,那后边会把强出来。那我我那我能不能这样写,你看有的同学我能这么这样写,ID1ID2这样不就。这样不就不覆盖了吗?对,这样是不覆盖了,但你这样可操作吗?我要删除多个市场活动,这个参数名,第一个市场活动啊,这个ID值叫IID1,另一个叫ID2,下边ID3ID41直往后,能不能这么向后的提交。可以吗?不行不行,为啥不行,后面用那个。
29:04
对,后边接入字符串数组那边接收的时候,我也叫什么,我也叫这么写不就行了吗?ID1ID2我也这么写不就行了。对,你不知道他选了几个是吧,你这个把你定义几个形,看大家明白这个意思吧,啊所以说大概这种方式,我要想后台提交是吧,多个一个参数门就有多少参数值,就不能这么写了,怎么写就用第二种方式了,哪种方式就这种贝塔后边用这种。一个这个什么参数知道呢,等于参数名参数值,然后呢,这个地方一个什么and的参数名参数值按一直往后拼and,然后呢,这个是什么啊K那吧,假如我们这个地方这就就直接这么写吧,就这样拼成这么一个字符转相互的提交,就这样可以。
30:04
这样这样的话,这些K1K2有可能会重名,重名也没关系,也都能提交过去,在后台用数组接触,一下子接触到了,所以这种方式么,他什么它既能够,既能够,不但什么不但能够提交,向后台提交一个参数名对应一个参数值的情况,他还能什么,还能向后台提交一个参数值,一个参数名对应多个参数的这种情况。知道吗?所以它的功能比它的功能更强大,知道吗?这是我们知。诶,那有同学说了,那以后老师我向后台提交参数的阿贾克斯后台我是不是都用它就可以了行吗。可不可以?我都用它。
31:00
那既然都用它,那你反过来想想,那既然都用它,那这种方式大家早就被淘汰了。所以说大康那它存在就有合,就是合理是吗?然后我说存在即是合理的,它肯定有存在的原因是吧?那那你想一想大纲那为什么还要用它呢?它既然既能提交一个参数名对应一个参数值,也能提交一个参数名对应多个参数值。那为啥还有他呢?那你反换句话来说,什么时候用它,什么时候用它。啊对,从理论上讲都用它是吧,但是它有什么好处,它有啥好处,就是强功能强大,但它有什么坏处呢。它对它有什么坏处,它的坏处就是用起来麻烦,你说你说怎么用起来麻烦,你要拼这么一个字符串。
32:00
你得把数据都拼成多拼多,这好拼吗?不好拼是吧,你你就我们一个参数名等于多少,你得便利,如果说是有几十个参数,你得往拼这么几十个字符串,你几几几十个数据都往这个字符串边拼,光拼字符传你就太麻烦了,所以它的好处功能强大,但是那么它的这个什么优势,它的优势啊。它的优势。它的优势就是功能强大,知道吧,不但能提交,你知道吧,一个碳数多,它多个碳数也能提交是吧?一个碳数对一个碳数多叫什么,它的劣势或者它的劣势,它的缺点,它的缺点就是什么。就是缺点就是比较麻烦,操作麻烦,操作麻烦怎么操作麻烦拼接字符串,你得把你那参数名,参数值都拼到一个大字符串里边。你得拼知道吧,就这样子,那这个地方它的好处是吧。
33:05
这反而这是它的什么?它的劣势,它的劣势就是说只能提交一个碳数,能对应多个参数式,不能提交一个碳数的,但是它是不是一点好处都没有,它的优势在于什么?对操作是么灵活或者操作简单,操作简单。就知道吧,这是我们说,我们是其实大厂任何事物都是两方面,我们做开发也是这样,任何技术都两方面的,不可能有完美的技术。你在有一优势的同时,你也付出了别的代价,知道吧,啊,这不有一句话就叫叫什么吗?说这个什么上帝给你么,关上一扇门之后一定给你开,打开一扇窗是他不可能说什么又给你开窗,又给你开门是吧,那那你那世界都是你的了,嗯,对他肯定是这样子的,那对于我们而言,那我们做开发的时候,我们选什么技术。
34:05
对,能用简单的就用简装的,不能用了,不得不用了,再用复杂的,你知道吧,所以我们这个状态,我们这两个这种方式我们怎么选的,就是我们以后看到的,如果你能确保你的参数肯定是一个参数值对应一个参数值用它。如果你要不能确保,那你就就不得不用它了,知道吗?好,这是我们给大家说到这,到时候你选的话就行了,知道吗?好,这是我们知道,其实大概除了这两种方式之外呢,还有还有一种方式啊。还有一种方式,还有一种式,这两个方式,这两种方式其实他俩都有一个共同的缺点,他俩都有一个共同的缺点,什么共同的缺点,他俩都是只能向后台提交字符串数据。所以你的参数只能是个字符串,就你这些参数值只能是字符串。包括这些参数值,这都只能是字符串,知道吗?所以我们说这个地方它的区列势也是只能提交字符串数据,只能向后台,向后台提交字符串数据或者叫文本数据通过,然后呢,这个地方也是只能向后台提交字符串数据,知道吗?诶你说老师像后台提交数据除了字符串还有别的吗?
35:27
对,我们说这个字符串其实包含这个什么数值不,这些能转成字符串的都可以,他们都可以提交,但是除了这些数据之外呢,还有一个,还有一种什么数据呢,还有文件。就什么文件,你比如说我想向后台发个请求,把我本地的一个视频和一个音频啊传到后台去,我想向后台提交文件什么,其实就是文件上传,我想上服务器把我本地的一个文件上传上去,这个时候这俩都不行了。
36:02
那用什么,他还有第三种格式,第三种格式的数据。这个data第三种格式的数据啊,这种格式的数据我今天先给大家讲讲,提一下,后边我详细的给讲讲文件上传的,详细的讲,你要想上传一个文件,你就用这个,用form data,用这个对象,它后边可以设成对象,这个对象怎么生成,直接溜就行了,这个对象可以模拟建值队向后台提交数据。啊,那上后台提交数据,提交数据怎么了?他有它的优势,它的优势干什么?它的优势不但能提交,不但能提交字符串数据,那还能提交那些文件,文件我们叫二进制数据,不管视频音频还是什么,还是什么压缩包什么之类的,这是这些这种二定制数据,这时我说吧,这这是它的优势知吧,但是它的劣势也很明显是吧?他的劣势什么?他的劣势就是更复杂,它的劣势劣势就是更复杂,操作更复杂,更复杂,复杂到什么程度,比他还复杂呢?
37:13
啊,不但拼字块了,你就创建有这么一个对象,然后把数据模拟传过就行,知道到底怎么操作,大家今天先不用管哈,我后边有时间详细大家讲啊,你知道它就行了是吧?就是说我们第阿贾格斯想获得提交参数只有这三种格式,这三种格式都有应用场景。再一个一个参数名提交字符串数据一,而且是一个参数名对应一个参数值,这个提交字符串数据,一个参数名对应多个参数值,再一个提交二进制数据文件上传知道吧,好,这是我们这个地方,那我们这个地方来看,我们这个地方一个参数名对应多个参数值,是不是只能是这种字符串,只能这样字,所以我们这个地方就这样了,你以后选也是这么一个原则,好然后呢,再看下边继续了啊,然后呢,这个地方来一个什么posts的请求方式,再来data塔点type,然后呢,这个谁啊结算行了,这样前台的第一个指责就完成了发送请求啊,下边第二个指责处理响应,处理响应,然后这个响应信息知吧,都在这个data塔里。
38:21
这个响应信息其实就这么一个阶算,下边怎么办呢?解析接算渲染页面了,那就是看看你删除成功了还是失败了,根据需求如果成功了刷列表,如果失败了,提示信息列表不爽,那你来看看吧,这个地方来看成功了,失败了,那你来看看,然后呢,贝塔点叫什么对扣的啊等于一对吧啊这个地方,然后呢,这个地方如果是,那么诶这个地方大哥这个输入法不对,然后呢,如果等于一是不是成功了,成功了干什么?对对需求我们这么跟我们说了,刷新市场活动列表,显示第一页的数据,保持每页显示条数不变,知道吧,这种了吗?这是我们知道,那刷列表怎么刷。
39:13
对,是不是又查一遍去啊对,查一遍查一遍就是掉分尔查询的函数,那查配置number,配置三配number等于几啊对一你看显示第一页的数据,保持每页显示条数不变,那它原来显示多少条?对获取这么一个东西,哪一个呢,是不是这个对获取这个东西,然后呢,这个地方写到这就行了,知道了,这是成功了,失败了呢,二次失败了,需求说了。提示信息列表也不用刷新,然后提示信息,那提示信息怎么提示,提示什么对message返回了啊。
40:02
列表不刷新,不刷新就别调走了,这样的话我们这个前台就行了,好吧。好,但是根据需求,我们说了他一点删除按钮,还得给他提示一下,确定删除吗?是不是这么,那确定删除吗,是不是我们把这一段代码。发请求的这些大码是不是放到一个那个里边去啊,对那提实弹,弹那个框咋弹啊,弹那个对话框window点叫什么,对confirm确认它里边给他显示一句话就行了,哪一句话提示的确定删除吗?嗯,确定删除吗?我们说这个函数,这是个函数,它会弹出来这个什么,弹出来一个对话框,确定删什么,这个对话框我们说是一个阻塞函数,阻塞函数什么意思?就是它这个窗口弹出来的时候,你只要用户不点确定或者不点取消,这个函数就一直死在这儿,一直阻塞的这个地方。
41:12
就等到用户点确定或取消了,点完之后,然后呢它才会执行,而且用户点确定和点取消的时候,这个函数会有一个访问值,这个访问值是个true或者false,点取消这里边是false,然后点确定这边是true,所以我们就判断什么它点完之后这个值是true还是后,那如果是处点确定了,确定删除了,向获得发径流,把我们的代码写到里边就行了。他要点取消,这里边是false false这里边进不来,那进不来就不管了,不发群众,这样的话,我们这个代码就行了,知道吧。好,这样的话,我这个前台就行了,前台后台都响了,下边来启动服务测一测就行了,好,下边来启动服务测一测。
42:17
然后呢,这个地方啊,张三YF123点进来,然后呢,市场活动我想删除市场活动我先查出来查出来,但你比如说呢,我说每页显示两行吧,然后呢,我这个地方来个我点到下一页啊,你比如说我我想删了删的话,假如我一个不选的点这个地方不让点啊。那我也选了大,我这选了你比如说我我想把这俩一和二删了,然后呢,这个地方我一点他大确定删除不,那你要点取消,那他返回false,那那他他就不发请求不管了,那如果你点确定的向后台发请求,把这俩ID发到后台就删了,删了之后跑到第一页去,保证每页想投入股票你看啊,一点开大看啊。
43:02
这就尴尬了,这为啥呢?没没删掉是吧?没删掉为啥呢?对,没删掉,那你看后台报错了吗?是吧,这就尴尬了,大家看看后台报错了吗?后台报错了吗?大哥,这个地方倒是查数据了你。这个什么删除它那个删除的搜索句执行了吗。找找获的山鱼。是不是没有执行啊,删除的三五就没执行,没执行是什么原因呢?对so语义都没执行,那有可能这个请求没发过去。就请求没法用了,请求没法请求没发过去,那就是那么那请求没发过去,那那什么原因了,那有可能那这个地方已经弹出来了,是不是这个代码,前面代码一定没问题了,对,那就看看后边这些了,后边这些你检查后边这些代码有问题吗?朋友。
44:04
拆了的ids好像没有什么明显的问题是吧?没有什么明显的问题,他这个请求到时候没发过去,没发过去,我就这么在这个地方lo一下,我看看他到底发向后台发起了,就把这个ids弹一下,看能不能弹出来,那能不能弹出来,来这个地方来启动一下测一测是吧,然后我们说它有问题不怕是。那你要能分析出来这种问题,看看在哪儿什么,怎么分析的,从咱们操作页面出发,结果没出来,那就是看看他整个执行的流程,看哪个环节当中出问题了,那来看看吧,这个地方。然后呢这个地方来个张二三,然后呢YF123点进来,然后呢市场活动,然后呢这个地方没删掉没,因为搜有域没执行吗?这个地方同意下同样选中它,然后呢这个段一点它,然后呢一点确定。
45:00
没谈懂吗?没谈说明什么?对,没谈说明这个代码都没执行,这个代码没执行,那又说明什么?对,这一块有问题,这一块有问题,这一块有什么问题啊,来看一看哪一个。啊,这个这个有问题啊,这这个是谁啊,应该是ids,这个怎么能写成STL呢。这谁写的,这谁写啊写的写的这我写的这把那个例子拷过来了是吧,好这样就行了,所以大家你要会调代码是吧,这出问题写代码不可能说你写代码一点问题没有的,你即使你干过很多年开发了,不能一点问题没有,知道吗?那怎么你要会调它怎么调它就是从你点的那段开始,按照流程往下调,你怀疑哪一段代码出问题,弹一下就行了,知道吗?
46:04
对这是我们这好,下边我们要启动啊,所以大家要会调代码,其实调代码其实很重要的,所有人到公司里边做做项目的,你很多时间上应该差不多1/3时际上还多呢,应该说都在调代码,就不是写代码,写代码太好写主是调代码,嗯对对,就是写bug写bug调bug嗯都是这嗯这些对你要光写代码,那就那多少代码都写不完呀,天天天天写,主要是调知啊这些,所以大家你以后是么,遇到问题你也不要不要说上来是吧,啊我就找别人帮我帮我看一下,不用找你自己就会调知道吧,但是我们说那你说你自己调,你别你别啥都自己调是吧,你都调两个小时了,你还调不出来,那你你你那那除了耽误时间是吧,一般来讲一个bug是吧,十一般来讲,对,十分钟到15分钟,如果你调不出来,基本上基本上就调不出来了啊。
47:05
对,那那那怎么办?那就找别人了,找老师是吧,或者找其他同学帮你看一看,要要找其他同学是不是他水平,那我很丢人是吧,我的水平就没他高了,不是这样的,你水平再高,水平干过很多年,开发你自己写的代码,有时候你发现不了。啊,很可能就这样,诶,你你总认为你写的对,知道吧,自己的代码调不出来,别人代别人一帮你看是旁观者清,况他就他一帮你看,他能看出来,不是说他水平多高,就是说他什么,他能发现你的这个这个毛病,但是你自己总会规避自己的毛病,知。好,这是我们一点它你看一点确定大看这样的话来看我们就删掉了,就访问到第一页了,好这样的话来看我们这个删除的这个功能,我们就给他做到这了。好,这一段我们就做到这儿了,好,下边呢,我们准备做这个修改了,下边大家休息会休息,我们做修改,好大家休息。
我来说两句