分享

URL太长导致参数被截断的问题

 WindySky 2009-03-29
做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(); };

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多