前端小tips-我的ff—talk的辛酸史

想记一点点小操作:
1.js 、css
(1).input的type file的样式:
这个file真的难看,一个选择文件的按钮,框给得大,还有未选择文件的字样,根本没法用啊!

#file_sending{
 width:80px;
 font-size: 6px;
 position: absolute;
 left: -60px;
 top: 0;
 opacity: 0;
 cursor: pointer;
}

这样处理,关键是设置宽高,opacity设为透明,然后绝对定位移下位置,再用个图标覆盖一下,这里我用的是bootstrap的一个字体图标。
文件输入的效果图(背景色当然是另外的界面样式啦~)
(2).SyntaxError: expected expression, got '}'
这个报错是出在“”、‘’的嵌套,一定要注意,别忘了检查。
(3).获取input file 的文件名
参考了这篇博文 https://www.cnblogs.com/ghfjj/p/6306222.html
(4).出了一个意外,写了两个input button,中间居然有一条横线,哪来的……
在这里插入图片描述
2.jQuery的小笔记
(1). $(this).children(“xxx”) 这个真的,要记住,用起来还是很舒服的
(2). .html() & .text() 和JavaScript中的innerHTML, innertext ,嗯…据说innerHTML在ff是不支持的,支持text()。不要和.val()混淆了!!!
(3). 写了个定时器,刷新在线列表,发现刷新是可以实现的,但是刷新之后在那之上绑定的事件并没有留下。然后一番搜索,发现了.live(‘click’,func)这个解决办法,绑定现在和未来的选中项。意外的是又报错了,TypeError: $(...).live is not a function 然后又是一通搜索,原来jQuery1.9以上的版本都弃掉了live了,新用法是.on(eventType, selector, function) 参考的博文是https://blog.csdn.net/qq_36370731/article/details/79016451,感恩
3.ajax的小笔记
(1).今天被自己狠狠的坑了一下午+一晚上。提交表单用ajaxSubmit()交的,看着控制台的请求是正确的,框架里调用的函数也正常(用print()测试了一把)。然后,提交之后,页面就是不跳转
在这里插入图片描述
然后确认了很久,框架啥的没问题,终于想到了返回值,然后在ajaxSubmit()加回调函数,用alert弹了一下,是我熟悉的代码没错,那么怎么显示呢,window.open() \ document.write()啥都出来了,还自以为睿智。然后当然是不行。
然后终于想到了,ajax不就是为不刷新设计的咩,真的是蠢的一批。被自己的智慧吓到了。只能安慰自己是,就当作学到东西了,起码对ajax有了永不相忘的印象了。今天万圣节,没给自己买糖,所以我的脑子给我捣了个乱,嗯!
(2).又蠢了一波.ajaxSubmit() is not a function
在这里插入图片描述
疯狂试探是不是ajaxSubmit()用错了,然后想起来,怕不是没导入jquery.form.js
好吧,也算是经验,有多个html时,一个要注意检查导入!!!
(3). window.location.replace的问题
我的url是/321672/exit.py
但是发到服务端的请求是/321672/32172/exit.py.好奇怪啊,为什么呢?用location.href = url也是一样的效果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是如果我的是url = “exit.py",他就不会自动添上/321672
我尝试使用window的chrome浏览器操作,发现还是会自动加上去,证明跟缓存无关。
问题解决了,实在没办法,灵机一动,加了根棍棍,就搞定了(心情复杂)
在这里插入图片描述
好像悟到了什么东西。试试,直接什么都不加,“exit.py”能自动加上需要的头/321672。有点意思
我在重定向之后的页面正常操作,发现之前执行没问题的另一个重定向也变成了会复制一个/321672,证明这就不是我代码逻辑的问题,就是浏览器内部机制的问题,是我没理解好window.location。所以要在它前面加上棍棍。ok!问题解决。
在这里插入图片描述
如果不行的话,其实也有别的思路,我退出登录,可以直接来个a标签,跳到login。然后一个.click(), 用Ajax给服务端发exit,实现用户数据从数据库删除。ennnn…现在想想这种方法其实好像还更好一点。
(4).回车提交的实现:
在这里插入图片描述
一开始写的是keyup,然后就疯狂报错,因为服务器框架写的是处理报文最后一个元素作为data, 但是回车的话,会输入一个‘’,导致接受的消息变成了空,然后就out of range了。https://blog.csdn.net/injurooioo/article/details/51000323 感恩!
(5).FormData
报错:TypeError: 'append' called on an object that does not implement interface FormData,解决:在ajax中加入这两句话就行:
processData: false, contentType: false
4.mysql小笔记
又来秀我愚蠢的操作了。
(1). 在这里插入图片描述
报错:ERROR 1063 (42000): Incorrect column specifier for column ‘id’
原因呢,嗯,是auto_increment类型要配int,蠢得可以.
(2). source .sql的使用
use databasename;
source path/xx.sql
(3).source .sql 每个语句后,记得加**;** !!!
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'create table online( …… 不然就是这个报错…
(4).drop语句
今天在把注册姓名改为允许中文,填了3个中文,正则通过了,但是数据库报错了,我的设置是varchar(16),嗯,这是数据库课程的遗留问题,中文不是相当于占两个字符?应该是编码方式的问题吧,现在先不深究。
在这里插入图片描述
事实证明是这样的,3个中文,因为我没有改encoding“utf8”吧,真的是很不好的习惯。然而并不是,数据库编码加上utf8也没用。打印之后,发现是%E9…的十六进制编码,然后企图把%换成\x然后encode,但是发现前面的b字母没法加,然后找到http://www.cnblogs.com/xdouby/p/8308915.html,知道这是url编码,要用urllib.parse.unquote()解码。但是又出现了问题,这个问题属于python模块了。
然后因为之前测试的时候塞了一些数据,有点乱,我就想把数据库删掉重新建,然后就出问题了。输入了drop语句之后,就一直在等待,像卡住了一样,没有响应。
在这里插入图片描述
只能通过ctrl C 结束。感觉他是一直在等待,应该跟之前使用数据库有关系,然后查到了这篇博文https://blog.csdn.net/cccheer/article/details/60480199,在mysql下,输入show full processlist; 然后是kill 86 就可以删除了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(5).今日份蠢是,sql语句写判断,写了 == , 现在ipython3试验还是很重要啊

5.shell脚本
编辑.sh文件,输入因为测试要经常执行的命令, 保存

chmod +x 文件名.sh

然后就可以ls,在目录中看见多出来一个绿色的xxx.sh ,就是可以执行的了

./xxx.sh

走你~
6.正经的python
(1).故事是这样的,在实现登录验证并刷新的时候,我的思路是用ajax提交,如果有错的话,通过返回值,if else 用js进行处理,在登录原页面显示错误提示信息。然后如果没有错,就window.location.replace()然后发出加载登陆后页面的请求。
问题就来了,miniframe中,我在验证函数将用户名、id存入了定义的空列表,打印证明添加成功了,但是在加载登录后页面的函数中对列表元素操作时,报错list out of range,输出证明列表为空,那么,为什么呢?
将空列表初始化,加了一个元素,再运行发现A输出了两个元素的列表,B输出的是初始化的列表

(中文知识为了方便我找到输出)
然后就可以得出大致的结论,结合之前修改mini_frame之后,需要重新连接服务器才能生效的经验,判断是由于我在得到返回值(和添加列表一起的),就调用replace(),此时函数B被调用,而它操作的列表是最初始的列表,修改没有被有效加载。。。看似高端的解释,其实没有这么复杂,调用B的时候,框架被重新运行,列表被初始化了……
需要换思路啦。。。这不行啊
(2).这个故事关于url编码
前面数据库中文出现%十六进制编码的问题,实在webserver.py对报文的解析没有到位,不支持中文,所以在注册存入数据库时,有中文输入的话,就要进行url解码(在服务器同一解码其实是比较普适的做法),我因为只有昵称会是中文,所以就直接在框架把昵称处理一下(明显很low的做法)。
遇到的问题是,在idle、ipython3中试验了,
import urllib urllib.parse.unquote()
都是没有问题的。但是在运行起来的时候就报错了
AttributeError: module ‘urllib’ has no attribute ‘parse’
解决是import urllib.parse . 鸣谢:https://blog.csdn.net/jeremyjone/article/details/80435385 感恩~
太感人了
后来……我的大作业就写完了,验收也通过了什么消息传递,文件发送,进度条显示,断点续传都不在话下。那会真的感觉是瓶颈了,然后就没有心思更新blog,然后就写完了,这是我第一份小项目,自己前端后端的把他拉扯大,真的很开心呢~
接下来的日子就要复习期末考,写实验报告,做各种上机,系统学Django,期望可以寒假或者春招找到实习吧,我加油!
然后运行效果在实验报告,实验报告代码上传一下,给跟我一样菜的有缘人,或者就当个纪念吧

猜你喜欢

转载自blog.csdn.net/weixin_42526305/article/details/83579142