javascript数组长度为1

时间:2016-11-06 08:46:42

标签: javascript html css ajax

我使用javascript创建过滤器。我正在使用ajax并收集价值。 Ajax请求:

IntPtr hwnd = (IntPtr)IE.HWND;

Servlet供应商:

if(window.XMLHttpRequest)
{
vendreq=new XMLHttpRequest();
}
else
{
vendreq=new ActiveXObject("Microsoft.XMLHTTP");
}

vendreq.onreadystatechange=function () { 
 /*  if(b==0){
                document.getElementById("details2").innerHTML="Select GIT more than 0";
            } */
      if((vendreq.readyState==4) && (vendreq.status==200)) {
            venda= [];

            venda.push(vendreq.responseText);
            alert(venda.length);

   } }
vendreq.open("Get","Vendor","true");
vendreq.send();   
});

当我显示警告(venda)时,它显示多个值。当我检查数组长度时,它会显示一个。任何人都能告诉我这是什么原因吗?

过滤器:

ResultSet rs =ps.executeQuery();    
                 while(rs.next()){
                 out.println(rs.getString("VNAME")+",");
                  out.println(rs.getString("VCODE")+",");
                 }

1 个答案:

答案 0 :(得分:1)

根据我从您的回复文字模板中了解到的,您将收到以下值:

VNAME1,
VCODE1,
VNAME2,
VCODE2,
...
VNAME(N),
VCODE(N),

如果将结果保存在对象中然后以json的形式返回它将会很棒。

它看起来类似于:

"VALUES":[{
    "VNAME": "VNAME1",
    "VCODE": "VCODE1"
}, {
    "VNAME": "VNAME2",
    "VCODE": "VCODE2"
},
... {
    "VNAME": "VNAME(N)",
    "VCODE": "VCODE(N)"
}]

另外针对您当前的情况(当您返回一个普通字符串时)我建议您使用一个独特的字符串拆分器来创建一个数组

out.println(rs.getString("VNAME")+",");
out.println(rs.getString("VCODE")+"+++");

所以它会将字符串返回为:

VNAME1,
VCODE1+++
VNAME2,
VCODE2+++

现在删除venda= [];而不是venda.push(vendreq.responseText);使用venda = vendreq.responseText.split("+++");这将创建一个返回的字符串数组"VNAME1,VCODE1","VNAME2,VCODE2"...

  

相信我这是一个糟糕的实现方法。改为使用JSON。

添加了代码段,例如:

str="VNAME1,VCODE1+++VNAME2,VCODE2+++VNAME3,VCODE3+++";
venda=str.split("+++");
alert(venda.length-1 +" Values: "+venda);