上周五,在下班的时候,写了一个上传程序,结果发现后台获取不到值。
百思不得其解
我采用的不是传统的表单提交模式,而是用ajax传输formdata提交到后台。 资料也相对比较少。
上百度,找了很多资料,也有类似的问题,但似乎都没有很好的解决此问题。
找到一个说的稍微靠谱一点的,说要么就是服务器上的问题,还有可能是表单中按钮不能用
<button id="btnUpload">上传</button>
而需要改成
<button id="btnUpload" value="上传"></button>
其实这个和最终的解决办法靠点边,但没有实际意义。
没办法,只好一遍又一遍的改写上传的代码,改用不同的方式去做上传功能,改了很多遍,花了一上午时间,而且又有其他的事情急着做,所以很着急。
然后,找到之前做过的一个类似的例子,去观察和分析提交参数的情况,发现参数根本没提交过去。。。
中午休息之时,反复的想着,为什么后台完全拿不到值,然后猜想,会不会跟前台标签有关系呢。。。
后来发现,原来,我写了一个form标签,在运行的时候,审查元素,表单莫名其妙的就没有了。。。
这是为什么呢?。。。 我问了自己很多遍。。。
仔细查看页面的时候,发现前面还有一个表单,于是把前面的表单干掉,再试一下。 这次表单不消失了。。。
于是,我想,难道是只支持一个表单,但应该不可能。。 很显然,不符合浏览器的设计理念以及现实需求。于是,突然眼前一亮。。 发现了错误的根源
<form id="searchForm" name="searchForm" method="post"><form>
表单代码写成了上面这样。。。。
<form id="searchForm" name="searchForm" method="post"></form>
这样一改就好了。。。
也许是周一的原因吧,感觉找问题的方法思路很乱。。。 于是浪费了美好的周一上午。。。
总结: 标签一定要记得成双成对,否则小小的标签问题,将会导致你花更多的时间去找莫名其妙的问题,而且往往费力不讨好。。养成良好的习惯,既是对自己负责,也能提高工作效率。。 千万不要因小失大。
也许你和我今上午一样,感到懊恼,感到迷茫,看看你的标签,是否也出了点小问题吧。。