一、 servlet中分别检索了GoodsType表和Provider表的数据(封装为List<表对应实体类对象>),从两个List中取值,并通过两个for遍历,向StringBuffer中循环追加数值,组成一个JSON对象,并传向前台JSP页面。
List<GoodsType> gtList=new ArrayList<GoodsType>();
List<Provider> pList=new ArrayList<Provider>();
GoodsTypeBiz gtBiz=new GoodsTypeBiz();
ProviderBiz pBiz=new ProviderBiz();
gtList=gtBiz.getGoodsType();
pList=pBiz.getProvider();
response.setContentType("text/html;charset=utf-8");
PrintWriter out = response.getWriter();
StringBuffer sb = new StringBuffer("[");
for (int i = 0; i < pList.size(); i++) {
sb.append("{");
sb.append("\"pid\":");
sb.append("\"" + pList.get(i).getPid() + "\"");
sb.append(",");
sb.append("\"pname\":");
sb.append("\"" + pList.get(i).getPname() + "\"");
sb.append("}");
sb.append(",");
}
for(int j=0;j<gtList.size();j++){
sb.append("{");
sb.append("\"gtid\":");
sb.append("\"" + gtList.get(j).getGtid() + "\"");
sb.append(",");
sb.append("\"gtname\":");
sb.append("\"" + gtList.get(j).getGtname() + "\"");
sb.append("}");
sb.append(",");
}
sb = sb.deleteCharAt(sb.length() - 1);
sb.append("]");
out.print(sb);
二、 前台JSP中的JavaScript中,对JSON对象内数值进行判断,分别添加到对应的
<select>
<option>JSON数值</option>
<option> JSON数值</option>
… ….
</select>
循环遍历JSON时,通过JSON[i]!=undefined判断数值类型,分别追加到对应的option。否则,两个select中会出现内容为undefined的option。
$(function() {
$.getJSON("servlet/GP.get", "por=" + "2", function(returnData) {
for ( var i = 0; i < returnData.length; i++) {
if (returnData[i].gtid != undefined) {
$("#goodstype").append(
"<option value='"+returnData[i].gtid+"'>"
+ returnData[i].gtname + "</option>");
}
if (returnData[i].pid != undefined) {
$("#p").append(
"<option value='"+returnData[i].pid+"'>"
+ returnData[i].pname + "</option>");
}
}
});
});