日期:2014-05-16  浏览次数:20359 次

JS location.replace( myurl )有没有替代方法
自己定义的记录ID太长,导致转给myurl时字符串太长了,现在myurl最长可能有2500个英文字符加数字。

var val = escape(document.getElementById("selVals").value);
document.frames['hiddenframe'].location.replace("x.aspx?_val="+val);

当选择记录ID少于50个,即myurl长度为650(大概估算)时,是可以正常跳到x.aspx的,
否则,就会跳转到res://ieframe.dll/errorPageStrings.js之后又转到res://ieframe.dll/dnserror.htm

请问有什么办法可以解决吗?或者有替代方法,可以是url的长度更长且被程序接收。

------解决方案--------------------
框架之间的传值吗?可以用JS直接获取的
------解决方案--------------------
页面之间的传值,用js直接赋值就可以了
------解决方案--------------------
地址太长什么方法都不能采取GET方法了,只能采取POST方法。
------解决方案--------------------
使用Post吧
<script>
form.action="new URL?v=key"
form.method="post"
form.submit();
</script>
------解决方案--------------------
原文地址:http://blog.sina.com.cn/s/blog_680a81e10100jo3c.html

JavaScript客户端中有一个叫做Location的对象,它代表了当前窗口或帧中显示文档的URL,而且Location对象有几个非常有意思的属性,现在我来介绍它们:

Location.hash:一个可读写的字符串属性,表示当前URL中锚的部分,包括前导散列符“#”,例如:#top。 
Location.host:一个可读写的字符串属性,表示当前URL中主机名和端口部分,例如:www.xxx.com:1234。 
Location.hostname:一个可读写的字符串属性,表示当前URL中主机名部分。 
Location.href:一个可读写的字符串属性,表示当前完整的URL。 
Location.pathname:一个可读写的字符串属性,表示当前URL中路径部分,例如:/home/news/list.htm。 
Location.port:一个可读写的字符串属性,表示当前URL中端口部分的字符串。 
Location.protocol:一个可读写的字符串属性,表示当前URL中协议部分,包括后缀冒号,例如:http:。 
Location.search:一个可读写的字符串属性,表示当前URL中查询部分,包括前导问号,例如:?q=javascript&m=10 
Location.reload():从缓存或服务器再次把当前文件装载进来。 
Location.replace():用一个新文档替换当前文件,而不在浏览器的会话历史中生成一个新纪录。 
  在实际应用中,Location对象可以很容易的控制URL,修改Location对象的属性会创建一个新的URL,浏览器会将新生成的URL装载并显示出来。例如,设置了Location对象的hash属性,浏览器会转到当前文挡中一个指定的位置。下边是我自己写的一个函数,并说明了如何应用:

<script type="text/javascript">
<!-- <![CDATA[
function getURLArgs() {
var args = new Array();
var pairs = location.search.substring(1).split("&");
for(var i = 0; i < pairs.length; i++) {
var index = pairs[i].indexOf("=");
if(index == -1) continue;
args[i] = decodeURIComponent(pairs[i].substring(index + 1));
}
return args;
}
// ]]> -->
</script>

  可以在body区域中像下边这样调用getURLArgs()函数:

<script type="text/javascript">
<!-- <![CDATA[
document.write("早上好" + getURLArgs()[0] + ",您是" + getURLArgs()[1] + "。");
// ]]> -->
</script>

  最后是我的运行效果:

------解决方案--------------------
根据项目的情况,ID定到足够用就行,过多的长度,不但编码时会出现麻烦,而且在查询时也会影响效率,尤其当数据较多的时候。