系統上線執行逐漸穩定了,這一天 James 接到總經理的 mail,有一張採購單怎麼採購簽核資訊怎麼都沒有顯示?
首先,James 檢查 SQL Server 與 IIS Server 的狀況,都正常運作,執行別張單據,也都正常,問題應該就只有這張單了。
James 比對採購分析資訊上的料號以及 BPM 採購單的料號,發現 BPM 採購單上的料號有一個 + 號,但是網頁上的料號該字元卻是空白。
這時 James 猛然想起,Google 查詢 Submit 後的 URL Location,每次查詢 Keyword 中有空白時,都會出現 + 號,「哎呀!+ 被 QueryString 當成空白了」
於是 James 將 js 中,有關 url 傳遞 part_id 參數的部分,都加上 encodeURIComponent,將傳輸的 QueryString 編碼,以避免被自動轉換掉。
$.ajax({
url: 'doPO_sp.aspx?slip_no=' + SLIP_NO + '&slip_date=' + SLIP_DATE + '&part_id=' + encodeURIComponent(part_id) + '&type=renew&Debug=' +isDebug+'&user_id='+user_id,
同時,從 BPM 那邊傳過來的部份,應該也會有這個問題,所以 James 請小艾在 BPM 中的 URL Link 中加上 java.net.URLEncoder.encode(part_id)
var part_link="<a href='http://10.2.32.168/ERP/qryPO_Parts.aspx?SLIP_NO="+po_no+"&user_id="+cmem_workid+"&SLIP_DATE="+po_date+"&part_id="+ java.net.URLEncoder.encode(part_id)+"' target='_blank'>"
重新開啟採購分析資訊時,料號與相關資訊的顯示都正常了,James 透過採購簽核查詢介面,又測試了幾張單,發現還有一個狀況,中文會出現亂碼;以前料件編碼沒有定義好,燒錄料的部份使用了中文編碼,使得經過的料號,採用 ISO-8859-1 編碼,於是要小艾再將 URLEncoder 修改一下,改以 java.net.URLEncoder.encode(part_id, "utf8") 的方式,就 OK 了。
James 這天剛好帶 iPad 來,就順便用 iPad 來測試一下採購簽核資訊的操作,在這之前他在 qryPO_parts.aspx 中加入了 HTML5 對行動裝置的支援作法。(註1)
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
讓畫面可以符合行動裝置的顯示方式。(圖1)(圖2)
圖1:iPad 執行畫面 1
圖2:iPad 執行畫面 2
「效果還蠻好的」James 將 iPad 上的呈現效果拿給小艾及喬安看,大家也都覺得很新奇。
「幾乎沒什麼差別」小艾也試著操作看看「不過,Scrollbar 的部份就沒辦法顯示,只能憑直覺滑動」
「嗯,這應該跟 Ext js 這部份的 CSS 沒有特別針對行動裝置去調整有關,不過那得花時間去研究了」James 不想多花時間去處理這個問題,也許等哪一天有空,再去查一下 Forum 看有沒有人反映過這個問題了。
註1:請參考 Choosing a viewport for iPad sites
& Safari Developer LIbrary:Supported Meta Tags