导入那些包就不说了,之前好奇怪的问题是 我在Action里面的方法返回只有return null;才能正确的执行success回调,
Action里面
public String Fill() throws IOException {
// 取值
HttpServletResponse response = getResponse();
// 设置返回类型
response.setContentType("application/json; charset=utf-8");
PrintWriter writer = response.getWriter();
// 获取数据
list = service.excuteSelect("PProduct");
//json数组
JSONArray json = new JSONArray();
JSONObject jo = new JSONObject();
//list转为json
try {
for (int j = 0; j < list.size(); j++) {
PProduct m = (PProduct) list.get(j);
jo.put("name",m.getName());
json.add(jo);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// System.out.println(json.toString() );
writer.print(json);
//缺少下面两句就error 要关闭
writer.flush();
writer.close();
return SUCCESS;
}
struts.xml正常配置就OK
ajax如下:
$.ajax({
url:"materialInfo!Fill.action",
type:"post",
dataType:"json",
success:function(data){
for(var i = 1;i<data.length;i++)//从1开始 因为第一行的数据 不是需要的
{$("#materialName").append('<option value="'+data[i].name+'">'+data[i].name+'</option>')};
$("#materialName").selectBox();//渲染下拉咧
},
error:function()
{
alert("数据获取失败 请重试");
}
});
JSP如下:
<select id="materialName" autoWidth="true"> </select>