添加显示不同长度的特殊字符时的Javascript数组
在我的jsp页面中,我有一些javascript代码,用于获取文本框中输入的所有值。我把它们放到数组中,然后传递到下一页。这是我的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=&
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);
}