幫朋友做一個小項目,只是當自己練練手的。其中有一個頁面上的需求,是這樣的:
一個原來做好了的表單提交頁面,需要增加一個按鈕,點擊這個按鈕,從本地讀取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 閱讀(1547)
評論(1) 編輯 收藏 所屬分類:
HTML