2016-11-06 110 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