<%@ page language="java" pageEncoding="UTF-8"%>
<script type="text/javascript" src="${pageContext.request.contextPath }/js/jquery-2.1.1.js"></script>
<script type="text/javascript">
function xiaoshou(){
var suoshubumen=document.getElementById("find").value;
console.info(suoshubumen);
$.ajax({
url:"crmuserAction!findBySuoshubumen.action?suoshubumen="+suoshubumen,
type:"post",
dataType:'json',
success:function(r){
for(var i=0; i< r.length;i++){
$("#ych").append("<option value='"+r[i].name+"'>"+r[i].name+"</option>");
}
},
error:function(){
console.info("error");
}
});
}
</script>
<div>
<form>
<table cellpadding="5" cellspacing="5">
<tr>
<td colspan="6">销售部门:</td>
<td>
<select id="find" onchange="xiaoshou(this.value)">
<option></option>
<option id="zhuguan" value="销售部主管">销售部主管</option>
<option id="guwen1" value="顾问1部">顾问1部</option>
<option id="guwen2" value="顾问2部">顾问2部</option>
</select>
</td>
</tr>
<tr>
<td colspan="6">销售人员:</td>
<td class="start" style="200px">
<select id="ych" name="name" >
</select>
</td>
</tr>
</table>
</form>
</div>
你的后台Action可能有问题,前台页面JSP是正确的。我后台用SpringMVC返回的,示例代码:
@RequestMapping(value="/getList")
@ResponseBody
public List getList(String suoshubumen){
List<Person> list = new ArrayList<Person>();
if("销售部主管".equals(suoshubumen)){
list.add(new Person("z1","1"));
list.add(new Person("z2","1"));
list.add(new Person("z3","1"));
list.add(new Person("z4","1"));
}else if("顾问1部".equals(suoshubumen)){
list.add(new Person("w1","1"));
list.add(new Person("w2","1"));
list.add(new Person("w3","1"));
list.add(new Person("w4","1"));
}else{
list.add(new Person("r1","1"));
list.add(new Person("r2","1"));
list.add(new Person("r3","1"));
list.add(new Person("r4","1"));
}
return list;
}
没有什么问题啊,数据都返回了,功能就实现了啊
我发现问题了,你的数据类型写错了,应该是json,你看你写的
肯定是没传对数据啊,你把类型写成json,然后用火狐看串返回到前台了么,没有就是出错了,我在上班,不能多说了
我测试了你的代码,就是一个简单问题 dataType:'josn',你写的类型json拼写错误了。还有你的form也拼写错误。改正就好!祝好!
dataType:'json',
修改好楼上说的错误后,自己查看数据返回的格式是什么,你代码解析和你返回的格式不一样也获取不到值
你用的jquery版本大于1.4,指定dataType为json一定要返回标准格式的json字符串,怪异模式也不会执行success回调。jquery dataType json
如返回{data:123},执行error,要返回{"data":123}
1、请把【响应】的返回文本发上来而不是json选项卡。
2、看你的json返回是要解析返回对象的rows
所以for要遍历r.rows。for改与成如下
for(var i=0,item;item=r.rows[i];i++)
{
$("#ych").append(""+item.name+"");
}
3、如果在【响应】选项卡中看到返回的文本以"开头"结尾请使用eval方法把文本转化为js对象
var data=eval("("+r")");
遍历data.rows