js页面如何处理ajax传递到页面的数组?
就是一个级联,利用AJAX和Struts2,select下拉框选择大类的同时,小类的下拉框显示大类中包含的小类值。
后台action:
//验证大类中是否存在小类
@SuppressWarnings("unchecked")
public String IsHaveProduct() throws Exception {
HttpServletResponse response=ServletActionContext.getResponse();
StringBuffer str=new StringBuffer();
productList=this.categoryService.searchBycategoryId(category.getCatid());
str.append(productList);//传一个list到页面
response.setCharacterEncoding("utf-8");
PrintWriter out;
try {
out=response.getWriter();
out.write(str.toString());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
页面中JS:
function Change_Select(obj) {
var catid = obj.value;
$.ajax({
type: "post",
url: "category_IsHaveProduct.action",
data: "category.catid="+catid,
dataType: "text",
success: function(data){
问题:
①从后台传入一个list到JSP页面,能获取到data的值,如 [1,2,3],将获取到的数组split(“,”)之后,得到的是[1 2 3],如何才能使获得到的值为 1 2 3,没有方括号 ;传递过来的数组中只有name属性的值。
②如何将获取到的值显示在页面中。
var a=data.split(",");
var selObj = document.getElementById("mailTeam");
while(selObj.options.length > 0){
selObj.removeChild(selObj.options[0]);
}
var opt = document.createElement("OPTION");
opt.text = "--请选择--";
opt.value = "0";
selObj.add(opt);
for(var i;i<a.length;i++){
var opt = document.createElement("OPTION");
opt.text = a[i];
selObj.add(opt);
},
error : function(xmlHttpRequest,error) {
alert("Error: " +error);
}
});
表格:
<table width="100%" border="0" cellspacing="2" cellpadding="0">
<tr>
<td width="15%" nowrap align="right">
大类:
</td>
<td width="15%" align="left" nowrap>
<select name="mailSelect" id="mailSelect" class="inputD"
onChange="Change_Select(this)">
<option value="0">
--请选择--
</option>
<c:forEach items="${categoryList}" var="category">
<option value="${category.catid }">
${category.descn }
</option>
</c:forEach>
</select>
</td>
<td width="14%" nowrap align="right">
小类:
</td>
<td width="18%" align="left" nowrap>
<select name="mailSelect2" id="mailTeam">
<!--第二个下拉菜单-->
<option value="0">
--请选择--
</option>
</select>
</td>
</tr>
</table>