添加显示不同长度的特殊字符时的Javascript数组

添加显示不同长度的特殊字符时的Javascript数组,java,javascript,arrays,Java,Javascript,Arrays,在我的jsp页面中,我有一些javascript代码,用于获取文本框中输入的所有值。我把它们放到数组中,然后传递到下一页。这是我的javascript函数 function gt2() { var pqr="100"; var arr=new Array(); var x=<%=height%>; var attstr=null; for(var t=0; t<x; t++) { var a=&

在我的jsp页面中,我有一些javascript代码,用于获取文本框中输入的所有值。我把它们放到数组中,然后传递到下一页。这是我的javascript函数

function gt2()
{
    var pqr="100";
    var arr=new Array();
    var x=<%=height%>;
    var attstr=null;
    for(var t=0; t<x; t++)
    {
        var a="inputText"+t;
           
        var e=document.getElementById(a);
        var val= e.value;
            
        arr[t]=val;
                
        if(t==0)
        {
            attstr=arr[t]+",";
        }
                
        if((t!=x)&&(t!=0))
        {
            if(t==x-1)
            {
                attstr+=arr[t];
            }
            else
            {
                attstr+=arr[t]+",";
            }
        }
    }
    window.location.assign("gt_Iba2?value="+attstr);
}    
我的第一个jsp中有五个文本框。我的代码正确地从这些文本框中选取值,并且仅当它不包含一些特殊字符时才传递到其他页面。

以上条件的输出对我来说是好的

!###The new value in second jsp is A|B|C|Dbcdrt,A|B|C|Dbcdrt,A|B|C|Dbcdrt,A|B|C|Dbcdrt,A|B|C|Dbcdrt
The length of allvalues is 5
因此,当我添加像#、&%这样的任何字符时,数组正在断开。这意味着它不会在该字符之后获取其他值

在这种情况下

我在第三个文本框中添加了“&”符号。所以我得到这样的输出

!###The new value in second jsp is A|B|C|Dbcdrtdf,A|B|C|Dbcdrtdf,A|B|C|Dbcdrtdf 
The length of allvalues is 3
在“&”符号之后,它不显示任何值。大小也是三。如果我在第二个文本框中添加这个,大小将是二。为什么在这些符号上出现这种行为?我也需要传递这些符号。我在这里做错了什么?我需要一些帮助


谢谢符号将url中的get参数分开(
参数1=value¶meter2=value2
)。因此,符号之后的所有内容都被视为第二个参数


如果您使用javascript函数
encodeURIComponent
attrstr
进行编码,那么它应该可以工作。

您遇到的问题是,当用作URI/URL的一部分时,字符
#&%?
都是保留字符。你应使用:

var val= encodeURIComponent (e.value);
这将使URI转义这些字符,并且URI将保持合法

就我个人而言,我也会使用Array.join将数组与逗号连接起来

    function gt2()
    {
        var pqr="100";
        var arr=new Array();
        var x=<%=height%>;

        for(var t=0;t<x;t++)
        {
            var a="inputText"+t;

            var e=document.getElementById(a);
            var val= encodeURIComponent (e.value);

            arr[t]=val;
        }

        var attrstr = arr.join(',');

        window.location.assign("gt_Iba2?value="+attstr);
    }
函数gt2()
{
var pqr=“100”;
var arr=新数组();
var x=;

对于(var t=0;tSame行为也表示“#”符号。不完全是这样,#符号表示网站中的链接目标,比如当你点击位于此端顶部的通知时,它会直接跳转到答案/注释。这甚至不会发送到服务器。
%
也会破坏内容
    function gt2()
    {
        var pqr="100";
        var arr=new Array();
        var x=<%=height%>;

        for(var t=0;t<x;t++)
        {
            var a="inputText"+t;

            var e=document.getElementById(a);
            var val= encodeURIComponent (e.value);

            arr[t]=val;
        }

        var attrstr = arr.join(',');

        window.location.assign("gt_Iba2?value="+attstr);
    }