帮朋友做一个小项目,只是当自己练练手的。其中有一个页面上的需求,是这样的:
一个原来做好了的表单提交页面,需要增加一个按钮,点击这个按钮,从本地读取ini文件里相应信息,填入到表单里去。
就是这么一个小需求,把我搞死了,水平还是太烂了
一开始,我首先想到的是用ajax做。
页面是这样写的:
<input type="button" id="btn" value="导入INI" size="30" onclick="f.click();"/>
<input type="file" id="f" name="f" onchange="fktmd()" style="display:none" hidefocus onkeydown="return false;"/>
但这个click()在FF下不好用,对于file不起作用。那只好在js里判断一下了,如果不是IE,则隐藏button,显示file。反正对特定用户来说,他们不会去用FF的。
但发现ajax的post请求,并不是真正的提交表单提交,只不过是把要提交的表单数据转换成一串请求字符串,然后用xmlhttp来send。但是对于上传文件,好象因为安全问题,xmlhttp是没办法了。
后来想到用iframe。设置一个iframe,js提交表单的时候,把form的target设置为这个iframe,也可以实现主页面无刷新提交。
然而,又碰到另一个问题:我上面file里onchange触发的js方法,IE下无法提交表单,老是报“拒绝访问”的错。
后来用排除法定位到出错的地方,就在这个file里。具体原因不明,
谁能告诉我吗?
既然没人告诉我为什么,那么继续
我放弃了原来用button模拟file的方案了,还是老老实实用file吧
现在,我用iframe来实现无刷新提交form了。提交完后,在iframe的src指向的页面里,写个给主页面各个输入框设置的js方法,parent.document.getElementById('tnnd').value=... 这里没有用js框架,我还不太会,正在看YUI,以后尝试用用,现在没空
还是先介绍一下我用的框架:JSP+Struts+Spring+Ibatis
这个读取ini文件设置到页面的小功能,是用在两个页面:“新增”和“修改”页面。我这个项目,因为对JSP和Struts遗忘得太多了,所以把新增和修改分成两个页面来做了,另一方面也是当时时间紧,没容我慢慢学习回顾。
但是,用了iframe之后,我发现“修改”页面正常了,但是“新增”页面却无法进入后台程序。
然后继续抓狂...
后来想到了是不是Struts的验证的原因。因为当时“修改”页面的数据是正常的,而“新增”页面是没有数据的时候在测试的,所以老是通不过验证,但是因为又没有去刷新主页面的,所以没办法报错。
最后,NND,总算好了。
另外,中间还碰到个小问题,就是jsp2.0的${}标记,在我本地是可以取到request里的值的,而在服务器上是取不到的。不知道是不是没有引用taglib还是其他原因,暂时不明,以后慢慢学习
posted on 2007-11-24 11:32
EvanLiu 阅读(1508)
评论(1) 编辑 收藏 所属分类:
HTML