00:00
啊,那刚才来我们做这个导入市场,我们这后台就写完了啊,后台map service controller,我们这些都写了,这些都是根据需求设计出来的,然后呢,剩下的是吧,就用代码用语法来实现啊,然后下边我们来看看前台,那前台我们这个地方来看看这个前台了,好。然后前台从流程上来讲的话,我们前面说了就是两件事儿,发请求处理响应,发请求的时候有参数收集参数,需要做表单验证,做表单验证知道吧?好,下面我们首先来看什么是发请流,那根据我们这个需求说了,用户一开始点导入按钮弹出啊,导入市场模上这个弹好弹,其实这个弹好弹啊,两种方式都可以弹他购属性或者自己弹也行啊。啊,自己谈,那可以做一些初始化工作,其实我们这个压根就不用做初始化工作,就直接用他购属性谈就行了啊,不用管了是吧?那谈出来之后,那用户选选择要导入是导入到Excel文件,那他选跟我们没关系,不用管了,他选完了之后下边一点导入按钮就发请求了,所以下边我们要做的事就是给这个导入按钮加一个单击时间,那加过来吧,导入按钮来看看,这个应该在我们的市场活动的主页面上面有个导入按钮,导入按钮应该在导入市场活动的那个摩擦窗口上面,这导入市场活动模擦窗口它后边有个按钮,它就这个按钮给它加个单击实验行了,拿这个地方有个ID了,那直接加了,所以话下边拷贝,然后呢,这个地方来给他一个。
01:38
加一个单击时间给入按钮,添加单击时间给导入按钮,然后呢添加单击事件,然后呢这个地方来选择导入按钮,然后呢加单击事件调视角函数。
02:01
那他一点那导入按钮就执行我们这个函数了,方老师没有,我们把代码写到这里边儿就行了。写到这里干什么?两件事,第一个发请求,那有参数,收集参数啊,要收集页面上这些参数,那哪些参数根据我们的设计,就是这个Excel文件,对,把这个文件拿到就行了。那拿文件在哪呢?对,根据我们以前的经验,是不是按理说这个文件也是个表单输入组件,那拿到表单输入组件上面个Y6属性值就行了,是那们就拿一下吧,Y6属性值拿来找到这个表单组件,这个表单组件应该在哪看看这一个应该这一个看吧,就是把它把它的Y6属性值拿到就行了,拿一下呗,拷贝,然后拿这个地方来一个。哎,这个地方。把它的Y6属性值,那拿Y6属性值好多种方法了,现在我们学了那最简单一个方法,拿到解块对项掉VL知道不,传参数表示获取值知道吧,然后呢,这个地方我就可以定个变量来保存到我这边呢,就叫activity范就行,按理说就能获取到那个文件了,但是这个地方大,我们说这个事实证明的话,这样获取这个这种表单组件文件上传的表单组件,你这样获取它那个Y6水值,获取的不是那个他选的那个文件本身。
03:30
他这个的获取的是什么?是那个文件的名,这样你只能获取他选那个文件名,文件本身你获取不到,因为文件本身比较大,有可能有几兆甚至几十兆,甚至更大,但是这样获取只能获取文件名。知道吗?他跟我们以前的普通的表单组件不一样,普通的表单组件你输入什么1.dl,直接把那个输入的内容拿到了他这个地方,不是拿到文件的内容,这个地方只能获取到文件名。
04:02
那你看,那那你说那你怎么这文件名,那我们可以测一下是吧,你弹一下你就知道了,你这他这段只能获取文件名,你看吧,启动你看看你知道只能获取文件名知。给普通的这表达组件不一样,看看这样。所以大家我们要写前端的代码,包括后台代码,如果有不确定的地方,测一测就知道了啊,谁说了也不算,嗯,你要去看一下网上找一些资料,网上说的也不一定对,嗯。这些那你测一下就知道了,你看那个登录一下,你看测一个,然后呢点进来,然后呢,这个是市场活动,然后我想导入市场活动,然后选一个选一个,你比如说他看我也选这个了,选完之后点打开,我一点导入按钮,触发我们的函数,我们函数拿到那个YVLY6属性值,你看它弹出来是什么看吗?这是文件名,那你还有这些,但是他把这个文件我们说了对,他把这个文件放到一个目录里边,而且这个目录呢,它是做了加密的。
05:07
当然这个目录是哪无所谓了,跟我们没关系,知道吧,啊,你知道他是弹了他这个地方获取的那个VR,获取的是这个文件名就行了,知道吧。那获取文件名,其实我们不就说我们这个一个人来看这个获取文件名,我们能拿到文件名,我们可以让就让他做一个表单验证,再一个呢,文件光拿到文件名也不行,要发到后台,要拿到文件本身,拿文件本身一会儿再说,我们先看看根据文件名我们可以如何做一个表单验证。做什么表单验证需求说了,说用户选文件的时候,一点登录完一点导入按钮,只能让他上传Excel文件,你看吗?对,拿到文件名了,我就可以拿到后缀名了,拿到后缀名我就知道他选的这个文件是Excel文件还是别的文件,如果是别的文件,我一看不是Excel文件,那看着库存不是XLS的话,那我就什么一点这个网后边请求都不让发了,直接在这提示一下就行了,拦截了知道吧,对,所以可以根据文件名来做个表单验证。
06:15
然后一会儿我再考虑如何拿文件本身知道吗?所以下边我们首先根据这个文件名可以做个表达验证知道,那它既然是文件名,这个变量名我给他改一改,叫fair name,就是他选的文件名,那拿到根据这个文件名我就可以判断啥是不是Excel文件,是不是Excel文件就看那个互置名是不是点XLS了。如果是,那就放行,让它继续往下走,如果不是在这就拦截了,知道吧,所以大家看,那如何判断它是不是Excel文件呢?对,是不是来获取这个文件名的后缀名就行了,跟XLS比一比,是不是LXLS,如果是放行,不是在这儿就被拦截了。
07:03
那所以我要拿取他的,拿到它的后缀名,那拿到这个文件的后缀名怎么拿。对,是不是得截取字符串了?对,截取字符这怎么截?根据根据哪个方法解对。那根据那个这是不是节点后边的那些内容就行了,对那截的话语法再看它的语法是不是,以前我给大家说过,对GS中,在GS中截取字串,给截取字串,我们给大家讲过两个函数,哪种函数一个是这个点叫sub s TL是,然后呢,这个函数的它语法用法叫什么?对两个参数,一个叫start的里表示截取那个字符串叫什么?开始的下边是不是这样的,从下边为它的字符开始截,然后后边一个参数表示什么?对截取多少个字符,那么的这个lengths截取的长度啊然后呢,还有一个方法,Sub X叫sub string,对它里边有两个参数,一个是开始截取到那个下标,从开下标为它的字数开始截,然后截取到对截束截取到下标时。
08:25
他的字符。这这两个我们这个地方要截取那个文件的后缀名,这俩用哪一个,按理说用哪一个都行,但是换句话说,这两个其实大家再一观察,理论上用两个就行,但是用哪一个都不太合适,为什么这俩都是截取什么呢?指定的那个下标区间的往前边接,知不知道那我这个要下标是不是要后边这一部分。这两个函数都是要前面的,不要后边,把后边的截掉。那我这个要是后缀名,我要后边的不要不要前面的,那怎么办呢?其实这两个都能都能用,但是我说这俩都不太合适。
09:06
知道你你要用,那你为什么从这开始截,然后截取到这个地方,所以这俩都不要合适,所以我们现在说这还有一种用法,这个SSTR这个函数还有一种用法,它好像有个重载,就好像一个重载的一个方法一样,它是什么?还有这个它可以传这个参数,只传一个参数也行,后边这个参数是可选的。这个只传一个参数,表示什么意思?表示这啊对,从下标是start index字符开始截,截取到这个字符号的最后要最后边吧,从下标下标为它的字符开始截取啊截取然后呢,截取到字符串的最后啊最后啊。对,这样就行了,所以大我说那是不是用它最合适啊,最合适,那我们这个地方,那用它我们结吧,那用它这个调这个方法叫sub s PL。
10:10
大家你看吧,他这是什么?他这这是函数,你看吧,这是from就是study in后边就是可选的,你看吗?带个问号知道吧。所以我们这个地方就从这个端口截传一个参数,那传这个参数从下边是几的字数开始截呢。对对,获取那个点的下标中,那个点的下标中如何获取,对有一个什么index是吧,包是吧,是不是表示获取某一个字符串指定字符的下标啊指定那这个我们获取是点的下流知道吧这种,但是我们都知道这种文件名。有可能包含点是不是这样的,你比如说大话,我有一个文件名叫它,然后它然后点XLS,对,那我们这样,你要如果这样截的话,是不是它截取第一个点啊,所在位置后边一个我们要截取最后一个,最后一个点的下标怎么办?对,Last inex哦,这些都是我们以前学过的语法啊,这是我们说从这个下最后一个点懂吧,这个开始截,截到最后啊,但是它这个是个闭区间,你要如果这样截的话,那个点也给你带着。
11:27
截完之后是个点X2X,对把点截掉是不是往后截一个,那那怎么往后截啊,对加一就行了,这样的话就拿到这个文件的后缀名了,然后呢,定一个变量叫sa s叫它后缀,这样的话我们就拿到后缀名了,拿到后缀名我们就可以判断一下,判断一下这个后缀名是不是等于XLS,如果等于放行,否则拦截就行了。来判断一下这个后缀名截取的是个字符串,看看这个是么?后缀名等不等于XLS那个字符串,那判断等不等于用哪一个对双等号是吧?等不等于XLS。
12:15
如果等于,那这个是处,那就执行里边的,执行里边的那就什么,那就是合法的,那我们这个要拦截的就什么不等于它,不等于它拦截在这呢,提示一下就行了,提示它告诉他这个地方来一个啊告诉他只支持是吧,只支持xls Excel文件啊,只支这种文件,那提示完了之后,后边代码都不指用了,直接return上就行了,知道吧,好,这是我们说的,这好,其实这个逻辑大概是没问题,但是这个地方有个问题是吧,有啥问题,我们说文件的后缀名大家都知道,不区分大小写,那如果如果是大家,我们说有的文件名有可能是这样子写的,我们说有可能是这样X2这样写,那我结局就是它。
13:05
那我们说这种文件文也是合法的,哪一种XLS大写的?也是合法的Excel文件,那这样写也行,XLS有大写有小写,还有XLS。等等,这些都是合法的Excel文件,如果我们这种逻辑的话,截取到之后,如果它是大写的,有大写的是不是你截取到跟这个一比对它就不一样了,不一样你也被拦截,但是人家也是合法的一个文件。所以这些后缀名应该也要放行,也要放行咋办?有一个去过。小不区分大比的这个地方不比的时候不区分大小写是不是知道吧,不区分大小写是哪一个是吧,是吧,那那是是吧,那那个是,那是Java里边的是吧,咱们这里是不是GS的,GS里没有不区分大小写,知道吧?对,我不管你这个后缀名有没有大小写。
14:17
截取的,不管有没有大小写,我统一把它们都转成什么,对小写,或者都转成大写,是不是都可以啊,这样,然后我不管你有没有大写,全部是什么,按转成小写,我知two叫什么,对lower case lower case知道。当然你都转成大写,你这个地方用大写是不是也可以啊,也可以知道吗?都转成小写,然后呢,这样的话,他不管叫,他不管是这后缀名是什么,是不是我们都是把转成这样子了,都按这种来判断就行,大家能理解这个意思吧,对这样就行了,这样的话,当我们这个参数就收集到了。这是我们这这是参这个什么后缀名收集到,然后呢,我们就可以做表单验证了。
15:03
他如果上传的是其他的视频音频,或者是其他的压缩包等等这些这个地方都被拦截了,给他提示就行了,好,这是我们说这个通过这个文件名可以做个表单验证。好,当然我们说光光拿到文件名,光做表达验证还不行,是吧?我们最终要发到后台,要把这个参数发到后台,发到后台不能发文件名,不能仅仅发一个文件名,我们最终是不是还得把那个文件发到后台,所以最终还得获取那个文件,获取文件咋获取?啊,获取这个文件,他选那个文件咋获取。那我们以前可能没获取的过是吗?对用解query或者用GS获取都没获取过,那没获取过大,我告诉你怎么这个文件在哪存着呢?你看怎么获取语法其实大家都已经会了,就是你不知道在哪存着,那我告诉你在哪存着啊,用户一选一个文件之后,假如他这个一选一个文件一点打开好了,这个文件就复制到这个表单组件里边,Input type等于刷入这个表单组件面,那么在这个组件里边Y6属性里边保存的是这个文件名,那这个文件本身保存到哪儿了呢?保存的这个地方,保存到这个表单组件的do目对象里边有一个属性,盗墓对象里边有个属性。
16:28
那个文件本身保存那个属性的知道吧,那个属性是什么,你先别管。我一会儿一写,那我就告诉你那个属性名,写的时候我告诉你那个属性名就行了,你先告诉我如何获取这个表单组件的盗墓对象,然后我一点那个属性,我就获取到这个这个文件本身了。对对,如何获取登对象,对有多种方式是吧?do.get BYD可不可以啊,对,可以,然后我用它的解块对象,这是不是拿到他的这个表达组件解块对象了,那我拿盗墓对象咋办?对点GET0或者是什么中括号零是不是也可以啊对,拿到盗墓对象了,拿到之后在这个盗墓对象里边有个属性,对专门保存它的那个给他复制那个文件本身吗?哪一个就这个这个属性它有提示,看叫fire啊,叫这个啊,哪一个哈。
17:29
叫fires知吧,就这个这个属性看吧,就这个属fires fire,大家一看名字也能看出来fire文件是吧?哎,大家带一个复数什么意思,你看吗。带个S表示负数表示什么表示它是,它是在大家看是这个表单组建这个标签,按照他们WC标准化组织设计这个标签的时候,他们是这么设计的,怎么设计,他说这个这个一个表单组件可以选多个文件。
18:01
不一定只是选一个文件,可以一下上传多个文件,那怎么选,他们设计的时候应该是这样,按住CTRL键选,那你说按照CTRL键选不了,对,这是浏览器厂商这些所有的目前来讲流行的浏览器厂商,他们做的时候只能选一个,就他们规定他们设计的时候可以多个,但是在浏览器厂商实现的时候,因为这都是在浏览器上操作的,浏览器厂商就实现了一个。他为什么不吃现狗狗?对,那那我觉得应该是很麻烦,因为他那程序员做起来比较麻烦,所以他们只实现了一个,不但是火狐的浏览器,IE那浏览器基本上都一样的,目前流行的浏览器只能选一个。是,但是我们说他他既然是什么,那你说只能只能选一个,但是这个属性呢,属性不能定义,只能定义一个,它多个就什么意思,那么将来呢,用户万一以后扩展了这些属性,这些浏览器都能实现多个了,这个时候他选多个文件,那多个文件就放到这个属性里边,那多个文件放到这个属性里边。
19:11
那这个属性要放多个文件,这这个属性大家看,其实它不是一般的属性,它是一个什么数独,这个属性是个数组知道,但是这些浏览器呢,浏览器场上只实现了一个,但是这个属性还是数组,还是数组。只不过这个数组里边只有一个元素而已,目前来讲,这个数组里边只能填一个元素。因为用户只能选一个,那以后你说老师以后会不会能选多个。对,有可能对,因为W3C这种标准化组织,他定义好了可以选多个,按理说大家看用户是不是也有这种需求,我可以一下上传多个,也有这种需求,但是只不过目前这种技术手段的话,只能一个。但是这个属性是个数组就行了,你知道就行了,那么那用户只能选一个,那这个数组里边只有一个元素,那我要获取那个元素,那就获取这个元素,这个数组的第一个元素就行了,那它的第一个元素我要获取怎么办?对是不是还是通过下标获取速度的元素,对零就行了,这样就拿到那个文件本身了。
20:17
用户选一个文件,那个文件就要放到这个什么数组里边,第一个元素里边,那以后谁知道这个社会发生了什么程度啊,那有可能,我想我想应该是以后应该支持多个,支持多个,支持多个你选几个,到时候你要是想获取哪一个获取哪一个啊,第一个选了第一个就是责F入零里边了,第二个F入一里边了,第三个反尔二里边就道了。知道,所以那到底中国到底以后会不会这样,那不知道呢,可能以后还要推出来新的语法呢,知道吧,所以那这都是够人考虑的事了吧,咱们就不考虑了是吧,所以这时候我们说就拿到这个文件本身,拿到文件本身定一个变量接收到我这个叫艾然等fair是然后呢定一变量是吧。
21:02
好,这样子,诶,这阳光太太刺眼了,把那个关掉,关一对。对,再再往再往下晃。好可以了可以了啊,看天气挺好啊好,当然这个文件本身我就拿到了是吧,拿到了前面也做完表达验证了是吧,这个什么文件类型做完验证了,还他还说让我们验证怎么弄对大小大小不能超过五兆。那这个时候刚才通过文件名能够给我验证类型,现在拿到本身了,那我就可以什么验证这个文件的大小了。那文件本身你都拿到了,那它的大小你就知道了,那就是它的大小是什么样的,对,它在这里边有个属性,在这个文件本身里边有个属性,叫哪一个属性,这个对就是size这个属性,这个属性就表示这个文件的大小。
22:15
用户选一个文件就能拿到它大小了,你可可以看一看,大概可以谈一下,嗯,这是文件的大小,通过这个筛子就能做文件大小的验证了,大家可以看一看。然后呢,这个地方登录YF123登录,然后呢市场活动,然后呢,你比如说大我选一个文件,你知道我选一个文件,你比如说但我选别的文件你看啊我随便我假如我举个例子啊,选别的文无你看word文件你看你点他不让你点它只支持Excel文件,知道吗。
23:06
这是我们知道,那你看我那个大家看我要如果选个Excel文件你看啊这个。选个Excel文件,那肯定文件我们说一点导入文件的类型,肯定能验证通过是吧,那你看文件大小,它就给我弹出来了,你看一点它文件类型验证通过了就往下找,这是文件大小,应该这这是多少。对它的单位,它的单位应该是对它单位是字节,以字节为单位的是我,我们这个X文件是这么多的字节,2万多的字节是多少多少K20倍。除以一零二四二十多K。Yeah。对二十二十多K 20多,你看咱们这个文件是不是20多K 26K 26K,他应该做四舍五入了知,这是哦,这是什么Windows做了四舍五入了知道,那你看看你具体有多少K,你看右键你看对属性你看。
24:10
对,26112 26112个,自己你看是不是26112个字看到吗?对,这是文件的大小都拿到,拿到之后大家看我这个地方就可以做表单验证了。那验证什么?就是看看这个文件的大小是不是大于五兆。如果大于五兆,这个地方就拦截了,不让请求都不让发了,知道吧,那是不是大于五兆呢?大于五五兆的五兆是不是得转成字节呀,五兆转成字节咋转1024,这是转成K了是吧?再乘以什么1024,这是字节交了,如果大于这个数就不让提交了,这个时方给他提示一下是虽然是X2文件,但是也不让提交了,嗯,然后呢,这个地方来个找多,然后呢,这个地方来告诉他文件的对文件大小不能超过五兆,就这拷贝,然后呢,这样提示完了之后,后边代码是不是都不执行了,都不知,请求都不说了,知,只要是大于五兆就有攻击系统的嫌疑了,就这。
25:21
好这样,那如果是不大于五兆,不大于五兆,这里边进不来,那么进不来就往下边走,是不是这样啊,往下边走,这样数据也拿到了,然后呢,也都验证都是合法的,下边就可以发请求了,对发送请求懂,那发请求根据咱们的设计,应该是个异步请求,那异步请求到了符号阿贾克斯在这边传一个对象,这个对象里边有个URL,这个URL就是咱们刚刚写的那个CTRLL,对这一个CTRL就是它,然后呢,这个地方就把它拿过来就行了,然后呢,CTRLC拷贝过来,然后呢,找到我们这个地方写到它这样的话就行了,哎,这这这样这样,然后呢,这里边的话把我们的参数发过去,这个参数这个地方有问题了。
26:10
这个参数我们以前给大家讲过,阿贾克斯向后台提交参数,这个data后边有三种数据类型。第一种数据类型是吧,大括号是吧,这里边有一系列数,这个参数名参数值是不是这样的,当然我说这种方式它有局限性,有什么局限性,对他只能什么,第一个他只能什么提交那些一个参数名对应一个参数值的情况。第二个他只能向后台提交字符串数据,是不是这个意思,字符串数据知道吗?那我们这个提交文件是不是不能用它了,不能用,不能用它还有一种方式叫什么,自己拼成什么参数名等于参数值,然后按照参数名等于参数值是不是样子,这种方式它也有局限性,它的局限是什么?虽然他能够向后台提交一个参数名对应一个参数值,或者一个参数名对应多个参数这种情况,但是他只能向后台提交字符串数据。
27:07
我们要提交文件,是不是也不能用它,也不能用它,那我们这个地方只能用第三种方式了。第三种方式用哪一个,我们提前跟大家说过,用那个对form data那个对象form data叫form data,这个对象只能用它了,这个对象我再给大家强调一下,这个对象这个类,这个东西是个什么呢?是阿贾克斯给我们提供的一个接口,就这个类,这个东西是阿贾克斯,就阿贾克斯给我们提供的,阿贾克斯在哪提供的,在他这里边提供的。在这个GS里边给我们提供的,在这里边定义了这么一个这么一个接口,那什么叫接口,其实我们说的这个接口相当是GS里边口,GS里边接口跟Java里边接口可不一样,Java里边的接口用interface定义,只能定义引用,不能创建对象,那么在GS里边呢?它这个接口说的就相当于Java里边的类,是吧?这是阿贾克斯提供的接口,这这都翻译过来了,提供的接口,提供的接口我们说啊,这个GS里边接口就是它就相当于Java里边类。
28:21
其实就是一个类类,怎么你可以创建它的对象,你可以往里边附属性,就这个意思啊,我们这GS里边接口就是让别人调的代码就有的接口,我们广义上的接口就是我们写的代码让别人去调,或者别人写的代码让我们去调,总之是某一个人写的代码账,其他的人去调的时候,这些代码都叫接口,这是广义上的接口,狭义上的接口候就是你们以前在Java里边学的接口是吧?用interface定义,然后呢,只能定义引用,只用interface定义一个接口,然后呢,这个接口只能定义引用,不能创建对象,这是狭义上的接口,广义上的接口。
29:02
广义上的接口是一个什么?一个人写的代码,让其他人去调,这些代码都要接口。那么以后大家后边学互联网技术的时候,老师还会给他讲接口,那些接口都是别人写的代码,让其他人去调,知道吧,这是我们说这种单接口,叫广义上的接口,那么这个form data塔就是阿贾克斯给我们写的一个接口,这个接口就是GS里边,其实就GS里边一个类,这个类干什么,这个类它作用就是使用这个类可以,这个类可以模拟键值对,键值对向后台,那么提交参数,提交参数,他专门向后台提交参数,怎么提交参数,以前我们都是通过大括号参数名参数值,参数名参数值或者自己拼成参数名等于参数值,按照参数名等于参数值,那每一个参数都是一个键值对,你看吗?参数名参数值,那么要向后台提交参数,必须得以什么以减值队的形式向获得提交?
30:03
那他也可以模拟建筑堆,向后代提交参数,知道吗?用这个接口怎么模拟,你先别管我一会儿写代码你就知道了,就是它的最大的一个作用就是能够向后台提交参数,它模拟建筑,对,那就说师,我们什么,我们自己用什么,用大括号或者用自己拼成字符串,先获得提交参数,提交的好好的,为啥用它模拟,它最大的好处就是说。不但能向后台提交字符串数据,还能提交二进制数据,我们这两种方式只能提交字符串数据,所以我们说form data最大的一个优势,最大的优势相对于其他两种方式,向后台提交参数的时候,最大的优势是不但能提交,能向后台提交文本数据叫字符串数据,还能提交,还能提交二进制数据。
31:04
二进制,二进制数据什么就以字节为单位存储数据,那就什么就是文件,不管Excel文件还是PDF文件,还是其他的,还是视频音频压缩包等等,所有的数据他都能提交知道吧。这任务说的是好,那你说让他提交,那么让他提交怎么提交,他的语法是这样子,他具体的用的语法,他就是这么提交的,怎么提交是吧?首先你要让他提交什么,想后台模拟建值,对提交参数的话,你首先必须创建它一个对象,怎么创建直接6GS里边创建一个类的对象,也是直接六啊,下边定义个变量来接收的定义变量怎么定义啊。对,在GS里定义任何变量都是BL变量名你随便起了,我就建明,这就叫form,好,这样的话我就拿到它一个对象了,拿到对象之后就可以模拟间值对向后的极交函数了,怎么模拟这个对象里边定义到一个函数,哪一个函数叫panda啊,Panda里边有两个参,需要你给他传两个参数,这两参数大家看这两参数什么?大家看它上面已经告诉你了,这俩参数你了鼠标放进去它自己告诉你了,诶这个地方。
32:17
这样你看啊,这俩参数来告诉你,他用传两个,那这俩参数什么含义啊,Name value name什么意思啊,对参数名这个呢,参数值知你看什,你给他给它起上一个什么参数名,参数值就了,就是一个k value减数多少,那这参数名你随便起是个字符串,你爱叫啥叫啥,但一般来讲建名之意,我这个要向后台提交参数。提交什么?提交这个市场活动的一个Excel文件,我这个地方就叫它了activity activity叫他了,知道吗?那后边这个值就是你要向后台提交参数,那我们这个参数是谁啊?对,就是这个文件本身,把这个变量拿过来就行了。
33:05
这样的话我们就可以了。这是我们说的这种,那么我们说把这些参数用它模拟的一个键值,对,把参数都放到这个对象里边,放这个对象里边干什么,把这个对象写到这就行了。他就可以发到后台了,知道吧,这是我们这那有同学老师他能够向后台提交二进制文件这种数据,我想再提交一个字符串,可不可以,可以不是,那怎么办?再来判断,你想提交几个参数都行,你比如说呢,我还是提交一个user name,假如说这个我就写死了,假如叫张三他也能提交过去,知道吧,随着这个对象一起也是提交到后头,知道吧,你想提交几个提交几个,就这个意思,知道吧。好,这是我们说的这,但是这个地方我给大家强调一点啊,这些参数名理论上随便起,但是症状你必须得保证这些参数名和谁对,和CTRL里边接收参数的这些形参的名字保持一致。
34:13
好,这是这时候我们获取那个文件,那保持一致,获取那个U侧内也可以,你要想获取也可以对来一个优侧内容,那当然当然它是字符串了,这个什么来个内幕,诶也能获取到,知道吗。牛说我怎么知道会,你在这打一下你就知道了,你看啊,然后呢,这个地方来优特内蒙将来你打一下他们,他也能获取到知好,这是我们说这个前排的这个这个参数就提交过去了,知吧,下边继续往后边来,然后下边来一个叫什么对type请求方式用什么方式的,对post文件上传的只能用post,下边来一个data type这个什么对接森字符串,然后呢,继续来的看前台的第一个职责就完成了请求就发布下边第二个职责处理响应success,然后呢,Function,那这个function里边有一个data接收响应信息,这个响应信息是什么?
35:20
对,就是这么一个阶层,那这个杰森我们就解析杰森渲染分标,那如何解析,首先看看成功了还是失败了,如果贝塔点Q的等于叫什么一,那就成功了,成功了那干什么,我们这个地方大哥需求说的很明白了,对这个看吧,首先这个干什么?对提示成功导入多少条记录,看到没?这个地方来提示成功导入到,那就提示一下吧,这个地方耳来个这个地方来告诉他我恭喜你,或者成功导入,那个导入多少条记录呢?对data大点是不是取啊,取谁啊叫return data是不是那个数据啊,在这个数据里边,然后呢,后边再给它拼上条记录,嗯,这样就行了,这是第一个提示的,然后呢,继续再看,我们还有什么看看。
36:20
关闭对关闭摩擦窗口,这都是需求告诉我已经告诉你咋关了,那关它的窗口咋关?对获取这个模带窗口对应的这个div,获取它的解块对象,调model就行,所以我们这个地方来,这个地方可以继续来,然后呢,这个地方来获取到老符号,获取这个div解块的对象,然后呢掉点对model关闭,这里边填一个对拍的下边怎么办?对刷新列表显示第一页的数据,保持每页显示条数不变,看了对刷新是不是调这个,调这个对调这个方法,调的时候传递一显示第一页的数据,另一个。
37:12
显示对获取当前显示哪多少条,是不是把这个获取当前这个原来显示多少条,是不是把这个地方拷过来就行了,对把它拷过来,CTRLC拷贝过来,然后呢,这个地方来写到我们这了,这样就行了。这样成功了,我们就做完了,下边失败了,二次失败了,失败了干什么看看。对,提示信息是这种提示信息,那你来个aler来一个叫data.message吧,下边模态窗口不关闭,模态窗口不关闭吧,那不关闭,其实本来就不关闭,懂我当然我们这个地方也掉一下受一下,然后呢,这个地方来个收五停,那列表也不刷新,那这个地方就不用掉了。
38:05
对,所以这样的话,大家我们说前排就行了。这就是根据咱们这个需求写的是。但这样写的话,那按理说这样这样基本上大部分就写当中这样写这样这样你点提交提交报上去。这样提交不上去,大部分想法他还有一个地方没设置。哪个地方没设置?对,我们前面给大家讲文件上传的时候,给大家说了,文件上传的时候那个表单必须满足三个条件,第一个条件表单组件是不是只能用fair,这个我们是不是满足了?第二个条件请求方式只能用post,是不是也满足了,也满足了第三种方式呢?第第三个条件修改,对,修改那个表单的编码格式是吧,修改成multi part form,那我们当时做文件上传的时候,设置了在音和type设置,你现在设置了吗?没事,没设置,那它还是按照默认的编码格式给你上这个传销后的提交参数。
39:11
那默认的编码还是用UR,诶,那有的老师表单用UR code来对所有的参数进行编码,阿贾克斯都没有表达他会不会按UQ的给默认编也是,但你想想阿贾克斯为什么能向后台发请求?阿贾克斯是模拟浏览器的行为,浏览器干了什么事,阿贾克斯也干了什么事,知道吗?阿浏览器每次向后台发请求,对所有的参数进行编码,默认按照UR库的编码,阿贾克斯一样,阿贾克斯也是默认按照UR的编码,知道吗?所以阿贾克斯之所以能向后台提交参数,发送请求,提交参数,就是因为阿贾克斯模拟了浏览器的所有的行为,所以他才能发的,知道吗?
40:03
那我们这个地方也一样,你要如果不设置编码格式好了,阿贾克斯,阿贾克斯向后的提交这参数的时候,也是这这么来做,第一步先把你那个文件转成字符串,然后呢,对那个字符串进行统一,进UR的编码,它给浏览器做的事完全一样,知道吗?那我们这个地方是个文件转成字符串,一转就报错了,转不成字符串,所以提交不上去,那怎么办呢?设置参数。不让他按照UR擎的编码了,不让它统一转成字符串了,知道吧,那怎么设置,你觉得在哪设置。在哪个地方设置对直接代入逻,则因为设置阿贾克斯的行为的,所以一定在阿贾斯的这个函数逻设置在这边,还得还有两个参数,你必须得设置一下哪两个参数,我这地方加来写啊,这地方来了哪两条,第一个参数是这个叫process data这个参数,这个参数干什么呢?这个参数它就是用来设置设置知吧,就这这个这个参数这这个参数这它的它的作用是这样默认情况下。
41:14
情况下,阿贾克斯每次向后台提交参数,都会把所有的参数统一转成字符串。统一转权资格干什么?为了按照URL库的编码进行做准备的,这个参数主要是为为了按照默认编码格式做准备的,它分了两个参数来控制,这个参数主要是控制是不是要把。发起阿贾克斯项获得提交参数之前,是不是要把所有的参数转成字符串弹出来控制,这来用来设置阿贾克斯向后台提交参数之前,然后呢,是否啊,是否是否把参数统一转换成。
42:03
然后呢,字符串统一转成字符串,它这个它数设它的知道吧,然后呢,它默认什么,它可以取值是处出,初时表示是会把所有的参数转到统一转走数,然后呢,也可以设成false false是不是就不转知道吧,默认是出就默认是出,默认是出知道吧,也就是说这个地方这个参数,如果你要不设置默认数,默认出怎么了,阿贾克斯会把你的所有的参数发请求之前先统一转成字数。那我们以前所那些数据能转字符串,那他转就无所谓了,现在我们是文件,他一转就报错了,所以我这个地方不让他是不让他转,不让他转怎么办?对false。这是我们说的这个参数,是阿贾克斯这个参数,然后呢,大概我们说除了这个参数还不行,这个参数是为了什么给是否转进行URQ的编码做准备的。
43:10
那我们说这个地方什么,那你即说不转不转他也会把你那参数都按照统一UUR后的编码,那所以我们下边孩子设是另一个参数,另一个参数干什么?就是设置阿贾的字,向后台发请求之前,是不是把所有的参数进行ure库的编码。知道吧,所以它还有参数,这个参数叫这个contain,这个参数它也是默认是true,默认是true表示什么?它用来设置阿贾克斯向后台提交参数之前,是否是否把所有的参数统一按urlco的编码编码。它这个地方也可以取两个值处,初始标志是会统一进行编码UR的编码,然后也可以取fo,表示不是不是默认是true,默认是出,也就是说默认情况下,你要如果不设置这个参数,那么阿贾克斯会把你的所有的参数统一按照UR1格的变化。
44:20
那我们这个地方幼儿用只能对字符串进行进行变码,我们提交文件,我们肯定也不让他装,所以这个地方。所以设置这俩参数就行了。这是阿贾克斯这个函数里边的这些参数,所以大家以前学阿贾克斯的时候,这俩参数我们应该没学过,我们在后来我们应该好还有一个你们没学过,一个以前没没用过的是吧,咱们后来跟大家说了,那个也别忘了有一个什么对,Before s。其实这个函数,其实我们说这个函数它有很多参数,其实还不止这些,还有别的呢,别的我们用不着的,我们就没给大家讲,用不着的我们就给大家讲啊。
45:02
好,这是我们说的这样,这样的话大概我们这个前排就行了,好吧。写完这个地方就行了,因为文件上传三个条件都满足了。这样的话我们就可以传上去了。那这样的话,他看我们前台后台都写完了,下边我们整个流程都写了,那下边就可以测一测了,下边来启动服务测试一下,启动服务测一下,启动一下测一下啊测的时候呢,大家我们这样。我们一会要上传到这边,把文件上传这边,先把里边这些东西都先清了啊server这个Di里边都先清了,别别影响这些,好这样我们来看看,然后呢这个方来登录,然后三然后呢,这个地方呢,YF要等点进来,然后呢我们这个地方市场活动,然后我想导入市场活来啊导入上场导啊这个地方来一个它然后呢这个地方来一个我选我可拉里边可拉里边这些数据的哈。
46:02
这个是不是咱们已经改过了,这些数据都改,改造好的,给客户约定好的,你给我上传文件,你只能上传这个这这这种格式的文件,知道,那我这个这些数据其实咱们数据库里边已经有了,我为了跟数据库区分开来,前面都加一个,哎,说明我这些数据是导入的。就全部都加一个,哎,这样就行了,然后呢,改完之后CTRLS保存一下啊,这样就行了,好,下边我就选这个文件了,选这个文件要导进去。导进去大家我知道点导入你看啊,你点导入。啊,系统毛是吧,要不然等一会儿,等一会儿再试一试吧,哪个地方哪个地方错了,那等一会儿是吧,那等到等到明天也也不行是吧,啊其实这就是骗人的是那后边哪个哪个地方报错了是报错不怕是吧,哪个地方报错了,看见没有是吧。
47:04
好像是句写错了。俺没找到ID啊。啊,这个。呃,哪个地方这有有I地址看。然后呢,看看啊这种啊,参数里边没有ID是吧,参数里边没有ID,参数里边怎么没有I呢?看一看啊。UID,嗯,AID,看一看这个参数没传过去ID那看这参数从哪来的呀,对参数是不是从这设置的,解析的时候设置的,设置到这个ID有没有啊。这个有ID是吧?这个有ID有ID我们已经确定设置到里边了,是不是这总有了话,那就看搜手句了,看搜句是不是用的时候没用到是吧,哪个地方这个地方有一个是么?对没写是吗?对obg是知道,所以大概他过错咱们不怕是吧,他给我们说的已经很明白了,哪个地方错了是吧。
48:21
哪个地方错了,你就找那个地方,那个地方从哪来的,就从这来的,他找IDID没有,ID没有,你看ID从哪来的,ID从这来的,你看这我有啊,有的话我确定有了,那干什么,那是不是我有了,你这个地方没取到知就在你那个写so页是不是没取到,没取到那你就来看他。啊,看看取到没取到,哎,一看没取到,那你说这个地方万一也取到了呢,对那一眼就看不出来了,是吧?然你要如果像我们这种问题,如果放了也取了也取,放了也对,取得也对,不可能报错,是不可能报错了啊,他肯定是某一个环节出问题了。
49:07
但是你要说每每一个环节都没出问题,你就你不用怀疑,他一定是对的,任何一个环节只要没出问题,一定是对的,你就别怀疑,知这是我们知道,但是他既然反,换句话来说,只要出问题了,肯定哪一个环节出错了,那你就顺着这个环节去找就行了,看这个数据从哪儿来的,传到哪儿去了,到哪儿用了这个还是这个流程,我们还是那句话,还是流程吗?还是流程吧,所以我们这个呢,启动服务再次起动,要知道。所以这是。就我们说调程序也是一个,也是一个技巧。嗯。来这个地方来个然3YF123点进来,然后呢,我这个来个市场活动,这个市场活动,然后呢,导入市场活动这种了,导入一下市场活动,选上它再点导入成功,导入两头知,然后导入两条,你再看一点确定再看把这个光了,下边就刷出来了,知吗。
50:23
这是我们说的这个导入市场通这么一个功能啊好。
我来说两句