2016-11-06 93 views
-1

我正在使用javascript创建过滤器。我正在使用ajax并收集价值。 AJAX请求:javascript数组长度为1

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(); 
}); 

Servlet的供应商:

ResultSet rs =ps.executeQuery();  
       while(rs.next()){ 
       out.println(rs.getString("VNAME")+","); 
        out.println(rs.getString("VCODE")+","); 
       } 
当我显示即警报(文达)

它显示多个值。当我检查数组长度时,它显示一个。任何人都可以告诉我这是什么原因?

过滤器:

<div class="optionsDiv2" style="display:inline;">  
    Filter by Vendor <select name="item" id="vendor"> 
     vendb=document.getElementsByName("venda"); 
    while(vendb.length) { 
    <option>vendb</option> 

    } 
     </select> 
</div> 
+0

因为你是推数组中的一个字符串!顺便说一句,你在AJAX之后得到的响应字符串是什么? –

+0

感谢您的回复@SaurabhSharma。我得到所有供应商的名称和供应商代码以逗号分隔。你能建议bme有什么更好的方法来回报价值。如果可能的话,我还希望将供应商代码保存在单独的数组中。 – techhunter

回答

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+++ 

现在删除和10,而不是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);

+0

非常感谢你的回答。一旦实现,我会让你知道结果,并且还会检查使用JSON实现的更好方法。 – techhunter