2009年3月27日 星期五

外跳視窗以進行post的動作-- 解決送出不成功、驗證碼(captcha)loading等問題

這項應用不是高科技,它行之有年了。

當初以這個架構來修改天空部落的留言系統,解決了很多的問題。

此種方法會被極少部份的瀏覽器擋下,但影響的人數極少。然而此種POST方法,可大幅增進使用者的便利性。

問題1:POST失敗

post常常會出現一個大問題,就是post不成功。大多數造成的原因是client端網路或瀏覽器的問題,而不是server端的問題。post常用在使用者寫文章、留言。然而當post不成功,或者是驗證碼錯誤,使用者一切努力都會白費。

問題2:驗證碼Loading

另外,以前的天空部落和無名小站現在一樣,每一篇文章的最下面,都會出現驗證碼。

image

 要跑出驗證碼的loading很重,往往是以php來產生。

另外,對SESSION系統還是會有一定的loading在。

解決方案

先window.open一個空白的視窗,再POST到這個新視窗

POST成功後,新視窗父視窗給重整,自己再關閉  opener.reload(); window.close();

常見問題

  1. 如果POST到不同網域,那如何讓 opener reload  ? 新視窗先導回 opener網域中的其中一頁,再進行 reload和關閉的動作即可。
  2. 某些瀏覽其中,無法觸發submit。 是的,本人幾次經驗中都無法觸發,一定要有完整的form的結構,而且form裡面要有type是submit的input才行。

範例程式請去天空部落看。