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> --------------------编程问答-------------------- 就跟一般处理action到页面的数据一样处理 --------------------编程问答-------------------- AJAX不直接LIST吧,只接受JSON格式数据或XML数据 --------------------编程问答-------------------- 如果后台传到前台的数据为data = [1,2,3]
则使用var array = eval(data);
就已经变成数组了 --------------------编程问答--------------------
报缺少“]”的JS错误。 --------------------编程问答-------------------- 如果我没猜错,你后台打印的东西,应该是这样的[Ljava.lang.String;@445e513,然后你eavl会报少一个]错误,你解决了没,
var myObject = {
b: [1,2,3]
};
alert
alert(decodeURIComponent($.param(myObject,true)));
你试试这样的,解决了和我讲一下哦,拜托了 --------------------编程问答-------------------- 你有没有再后台array.toArray()?应该就是后台传数据时出错了,你用firebug看一下传过来的数据是否缺少],如果缺少,那你就查看你的后台吧。
补充:Java , Web 开发