【问题标题】:Javascript array when adding some special characters showing different length添加一些显示不同长度的特殊字符时的Javascript数组
【发布时间】:2013-10-09 09:50:01
【问题描述】:

在我的 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 中有五个文本框。我的代码正确地从这些文本框中选择值并仅在它不包含某些特殊字符时才传递到其他页面。

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

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

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

谢谢

【问题讨论】:

    标签: java javascript arrays


    【解决方案1】:

    &amp; 符号分隔 url (parameter1=value&amp;parameter2=value2) 中的获取参数。所以符号后面的所有内容都被视为第二个参数。

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

    【讨论】:

    • '#' 符号也有同样的行为。?
    • 不完全是,# 符号用于网页中的链接目标,例如,当您单击此侧顶部的通知时,它会直接跳转到答案/评论。这甚至没有发送到服务器。
    • ?% 也可以破坏事情
    【解决方案2】:

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

    附:在您的循环中,(t!=x) 将始终为真。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多