自己定义的记录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的长度更长且被程序接收。

解决方案 »

  1.   

    我说的可能不清楚,就是我的val太长了导致location.replace不能正常执行
      

  2.   

    地址太长什么方法都不能采取GET方法了,只能采取POST方法。
      

  3.   

    使用Post吧
    <script>
    form.action="new URL?v=key"
    form.method="post"
    form.submit();
    </script>
      

  4.   

    原文地址:http://blog.sina.com.cn/s/blog_680a81e10100jo3c.htmlJavaScript客户端中有一个叫做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>  最后是我的运行效果:
      

  5.   

    除了上边操作URL的方法外,还可以利用JS的帧(框架或内嵌框架)的交互。在JavaScripr中,每个窗口中都有一个全局对象Window,例如我在窗口A中定义了一个变量:var i = 0,
    我也可以这么引用它:window.i 或 self.i。在客户端HTML中有一个数组对象frame,它存储的是当前页面中帧的数组,当一个窗口中有多个帧时候,我们就可以利用它引用不同的全局对象来传递参数:
    window.frame[0] 或 self.frame[0]上边的"[0]"代表的页面中出现的第一个帧,同时因为window对象在JavaScriprt作用域链的头部所以上边的可以简写成:frame[0]像上边那样操作引用的是一个页面中的子帧,如果是子帧的子帧可以这么引用:
    frame[0].frame[0]如果是子帧想引用它的兄弟帧,可以用parent来操作,parent代表的是子帧的父帧的全局对象:
    parent.frame[2]如果一个被嵌套多层的帧想访问它的顶层窗口的帧,可以用top来操作,top代表的是顶层窗口的全局对象:
    top.frame[0]如果想引用一个子帧中的变量或函数可以这么写:
    引用变量:...frame[0].o
    引用函数:...frame[0].o();
    但是请注意,JavaScripr是词法作用域,如果引用一个不同页面中的函数,那么那个函数将在定义它的页面中运行,而不是引用它的页面中运行。如有问题可以联系我:
    Blog:http://blog.sina.com.cn/qq411908279
    QQ:411908279
    Mail:[email protected]
      

  6.   

    除了上边操作URL的方法外,还可以利用JS的帧(框架或内嵌框架)的交互。在JavaScripr中,每个窗口中都有一个全局对象Window,例如我在窗口A中定义了一个变量:var i = 0,
    我也可以这么引用它:window.i 或 self.i。在客户端HTML中有一个数组对象frame,它存储的是当前页面中帧的数组,当一个窗口中有多个帧时候,我们就可以利用它引用不同的全局对象来传递参数:
    window.frame[0] 或 self.frame[0]上边的"[0]"代表的页面中出现的第一个帧,同时因为window对象在JavaScriprt作用域链的头部所以上边的可以简写成:frame[0]像上边那样操作引用的是一个页面中的子帧,如果是子帧的子帧可以这么引用:
    frame[0].frame[0]如果是子帧想引用它的兄弟帧,可以用parent来操作,parent代表的是子帧的父帧的全局对象:
    parent.frame[2]如果一个被嵌套多层的帧想访问它的顶层窗口的帧,可以用top来操作,top代表的是顶层窗口的全局对象:
    top.frame[0]如果想引用一个子帧中的变量或函数可以这么写:
    引用变量:...frame[0].o
    引用函数:...frame[0].o();
    但是请注意,JavaScripr是词法作用域,如果引用一个不同页面中的函数,那么那个函数将在定义它的页面中运行,而不是引用它的页面中运行。如有问题可以联系我:
    Blog:http://blog.sina.com.cn/qq411908279
    QQ:411908279
    Mail:[email protected]