请问下这段代码有什么问题,数据也已经返回了

 <%@ 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