0

在我的 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 页面中,我得到了该值。

String newValue=request.getParameter("value");
System.out.println("!###The new value in second jsp is "+newValue);
String[] allvalues=newValue.split(",");
System.out.println("The length of allvalues is "+allvalues.length);

我的第一个 jsp 中有五个文本框。我的代码正确地从这些文本框中选择值并仅在它不包含某些特殊字符时才传递到其他页面。 图像1

上述条件的输出对我来说很好。

!###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

因此,当我添加像 #,&,% 这样的任何字符时,数组正在破坏。意味着它在该字符之后没有采用其他值。

在这种情况下img2

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

!###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

在那个“&”符号之后,它没有显示任何价值。大小也是三个。如果我在第二个文本框中添加这个大小将是两个。为什么在这些符号上出现这种行为?我还需要传递这些符号。我在这里做错了什么?我需要一些帮助

谢谢

4

2 回答 2

1

#&%?您遇到的问题是,当用作 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);
    }

PS 在你的循环(t!=x)中永远是真的。

于 2013-10-09T10:00:33.567 回答
1

&符号分隔 url ( parameter1=value&parameter2=value2) 中的 get 参数。因此,符号之后的所有内容都被视为第二个参数。

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

于 2013-10-09T09:54:32.013 回答