1. 程式人生 > >window.open以post方式提交

window.open以post方式提交

一般
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>  


推薦使用第二種方式,第一種方式有時候有問題