2016年3月10日 星期四

html submit to iframe and call parent function

最近用了一個古老的解法,就古老的系統只能用古老的解法~

主要是為了做出仿 ajax post input file 的行為
(那為什麼不用 jquery ajax post file 就好,就><...IE太舊在 ajax時不認識 file 這個 type)


所以這個解法的概念就是~
html XXX 內嵌一個 看不見(display:none) 的 iframe AAA,
然後把 form BBB( input type="file", ) post submit 到 iframe AAA 裡~
其 form 的 action (把檔案傳到server) 後 response 結果 會在 iframe AAA裡,
因為 iframe AAA 算子視窗的一個,所以就可以 call parent XXX 裡的 function 做 refresh (就像 ajax 的 callback function)


就~ form (其實這個 form 內容可以用 jqeury.html(xxxx) 生成...可以藏得更裡面XD),target 指向 iframe ,
<form  enctype="multipart/form-data" action="xxxxx" id="sub-form" target="sub-iframe" method="POST" >
                                <input type="file" name="uploadFile" id="uploadFile">
</form>

<iframe style="display: none" id="sub-iframe" src="javascript:false;" name="sub-iframe"></iframe>

定個 callback function 進行後續動作,要傳值進去也是可以的~
function uploadFileCallback()   {
    .....
}


而在 action response 的內容時~
<html>
    <head>
    </head>
    <body onload="window.parent.uploadFileCallback();">
    </body>
</html>


題外話, 用 jquery.html() 組 form 的資料是可行的~可以實現動態 submit 不同的form 內容,然後只看表面上的code是看不出來的喔XD...

沒有留言: