window.open以post方式提交
阿新 • • 發佈:2019-01-03
一般
window.open 傳引數都是用Get..方式..在url後面拼接引數...
有時候並不適用,如:
1)不想被看到引數資訊
2)引數過長,get有限制會被截斷
3)可能有中文編碼問題
所以需要用post方式
方式一:
function submitForm(){ window.open('','newWin','width=400,height=500,scrollbars=yes'); form物件.submit(); } <FORM name=form action="YourActionFile.html" method="post" target="newWin"> ... </Form>
也可
function openWindowWithPost(url,name,keys,values) { var newWindow = window.open(url, name); if (!newWindow) return false; var html = ""; html += "<html><head></head><body><form id='formid' method='post' action='" + url + "'>"; if (keys && values) { html += "<input type='hidden' name='" + keys + "' value='" + values + "'/>"; } html += "</form><script type='text/javascript'>document.getElementById('formid').submit();"; html += "<\/script></body></html>".toString().replace(/^.+?\*|\\(?=\/)|\*.+?$/gi, ""); newWindow.document.write(html); return newWindow; }
方式二:
<script> function openPostWindow(url, data, name) { var tempForm = document.createElement("form"); tempForm.id="tempForm1"; tempForm.method="post"; //url tempForm.action=url; //open方法不能設定請求方式,一般網頁的post都是通過form來實現的。 //如果僅僅模擬form的提交方式,那麼open方法裡那種可設定窗體屬性的引數又不能用。 //最後想辦法整了這麼一個兩者結合的方式,將form的target設定成和open的name引數一樣的值,通過瀏覽器自動識別實現了將內容post到新視窗中 tempForm.target=name; var hideInput = document.createElement("input"); hideInput.type="hidden"; //傳入引數名,相當於get請求中的content= hideInput.name= "content"; //傳入傳入資料,只傳遞了一個引數內容,實際可傳遞多個。 hideInput.value= data; tempForm.appendChild(hideInput); tempForm.attachEvent("onsubmit",function(){ openWindow(name); }); document.body.appendChild(tempForm); tempForm.fireEvent("onsubmit"); //必須手動的觸發,否則只能看到頁面重新整理而沒有開啟新視窗 tempForm.submit(); document.body.removeChild(tempForm); } function openWindow(name) { window.open('about:blank',name,'height=400, width=400, top=0, left=0, toolbar=yes, menubar=yes, scrollbars=yes, resizable=yes,location=yes, status=yes'); } </script>
推薦使用第二種方式,第一種方式有時候有問題