做Web開發時經常涉及到頁面之間的轉跳,頁面之間的轉跳就會涉及到頁面之間參數的傳遞,通過URL傳遞參數是常用的方法之一,但是微軟說: "Maximum URL length is 2,083 characters in Internet Explorer",也就是說URL是有長度限制的。
ASP.NET應用程序前臺與后臺的數據交換都是通過FORM表單來完成的,FORM表單提供了兩種數據傳輸方式:GET和POST,這個兩種數據傳輸方式在實際傳輸中有很大的不同,但ASP.NET框架中已經屏蔽了二者的一些差異。GET是用來從服務器上獲得數據,而POST是用來向服務器提交數據的。二者數據傳輸過程中分別對應了HTTP協議中的GET和POST方法。
GET方式是把參數數據隊列加到提交表單的ACTION屬性所指的URL后面,并且使用"?"隔開,值和表單內各個字段一一對應,在URL中可以看到,它是FROM默認的提交方式,受URL長度的限制,它所能傳遞的數據量小。
POST方式是把表單中的數據放在FORM載體中,按照變量和值相對應的方式,傳遞到ACTION所指向URL,POST可以傳遞大數據量的信息到服務器,通常文件上傳就是使用POST方式上傳。
為解決GET方式傳遞大數據量參數的問題,要使用POST方式進行數據提交,下面是一個用來代替window.open的方法
1.JavaScript
/** PostNewWin* Author:ppchen*/var PostNewWin = function(url){var urlArr = url.split("?");var postUrl = urlArr[0];var postData = urlArr[1];var iframe = document.getElementById("postData_iframe");if(!iframe){iframe = document.createElement("iframe");iframe.id = "postData_iframe";iframe.scr= "about:blank";iframe.frameborder = "0";iframe.style.width = "0px";iframe.style.height = "0px";var form = document.createElement("form");form.id = "postData_form";form.method = "post";form.target = "_blank";document.body.appendChild(iframe);iframe.contentWindow.document.write("<body>" + form.outerHTML + "</body>");}iframe.contentWindow.document.getElementById("postData_form").innerHTML = "<input name='postData' id='postData' type='text' value='" + postData + "'/>";iframe.contentWindow.document.getElementById("postData_form").action = postUrl;iframe.contentWindow.document.getElementById("postData_form").submit();};