Web.xml:
<dwr> <allow> <create creator="new" javascript="OperaDAO">
<param name="class" value="dao.OperationDAO"/>
</create> <create creator="new" javascript="MakerBiz" scope="script">
<param name="class" value="biz.MakerBiz" />
</create>

<create creator="new" javascript="VtypeBiz">
<param name="class" value="biz.VtypeBiz" />
</create>     <convert match="entity.Maker" converter="bean">
      <param name="include" value="MId,Lcode,Mcode,Vcode,Brand,Model,VType,Vtypepro" />
     </convert>
</allow></dwr>
dao:
public List<Maker> getMakerByMcode(String strMcode){
List<Maker> lists = new ArrayList<Maker>();
String strSql = "select * From Maker where Mcode='"+strMcode+"'";
Connection connection = null;
Statement stmtStatement = null;
ResultSet rSet = null;
try {
connection = ConnectionManager.getConn();
stmtStatement = connection.createStatement();
rSet = stmtStatement.executeQuery(strSql);
while (rSet.next()) {
lists.add(get(rSet));
}
} catch (Exception ex) {
System.out.println(ex.getMessage());
} finally {
ConnectionManager.close(rSet, stmtStatement, connection);
}
return lists;
}biz:public List<Maker> getMakerByMcode(String strMcode){
return dao.getMakerByMcode(strMcode);
}Web页面:<script type="text/javascript">
var makerCache = { };   
       
        function init() {   
            // 当发出ajax请求后,页面显示的提示等待信息;             
            DWRUtil.useLoadingMessage("loading.....");   
               
            MakerBiz.getMakerByMcode(
             $("Manufacturer").value,             
             function(data){
             alert(data);
             alert(data.Brand);
             alert(data.Model);
             alert(data.VType);
             alert(data.Vtypepro);
             alert(data.Lcode);
             alert(data.Vcode);
                makerCache=data;   
                fillTable(data);
                
            });            
               
        }   
           
        var cellFuncs = [   
            function(data) { return data.Brand; },   
            function(data) { return data.Model; },   
            function(data) { return data.VType; },
            function(data) { return data.Vtypepro; },
            function(data) { return data.Lcode; },
            function(data) { return data.Vcode; },
            function(data) { return "<input type='button' value='Delete' onclick='Delete("+data.MId+")'/>";},
            function(data) { return "<input type='button' value='Edit' onclick='Edit("+data.MId+")'/>";   
            }
        ];   
           
           
        function fillTable(data){                
            // 填充表格                                            
            dwr.util.addRows( "makerBody",data , cellFuncs, { escapeHtml:false }); //html内容不输出
        }   
           
        
</script><tbody id="makerBody">
<tr>
<th>
&nbsp;
</th>
。。 </tr>
</tbody>

解决方案 »

  1.   

                alert(data);  返回 object Object,object Object.........
                alert(data.Brand); 返回 undefined
                alert(data.Model); 返回 undefined
                alert(data.VType); ........
                alert(data.Vtypepro); .........
                alert(data.Lcode); .........
                alert(data.Vcode); ........
    .
      

  2.   

    data相当于那个lists,里面都是字符串,你想按列名取,哪有那么智能啊,直接for循环data,alert(data[下标]);
      

  3.   

    可是
    alert(data[1]); 返回的是[object Object]alert(data[1][1]):  undefinedalert(data[1][Brand]): 返回 Brand 未定义我想是不是配置哪错了,我也是才学的,请指教
      

  4.   

    你这样是取不到得,你直接把结果集rs放list中了, 那怎么行
    while(rs.next){
        list.add(rs.getString("Brand"));
        list.add(rs.getString("Model"));
        ......
    }jsp页面:
    for(var i=0;i<data.length;i++){
       alert(data[i]);
    }你也可以写个bean嘛,把结果集的内容放到bean里,再把每次的bean放到list中,这样jsp页面就可以根据你的bean里面的属性名取值了
      

  5.   

    哦,有一段代码没贴,我调试了,那个Lists取到了
    private static Maker get(ResultSet rs) throws SQLException {
    Maker item = new Maker();
    item.setMId(rs.getInt("MId"));
    item.setLcode(rs.getString("Lcode"));
    item.setMcode(rs.getString("Mcode"));
    item.setVcode(rs.getString("Vcode"));
    item.setBrand(rs.getString("Brand"));
    item.setModel(rs.getString("Model"));
    item.setVType(rs.getString("VType"));
    item.setVtypepro(rs.getString("Vtypepro"));
    return item;
    }
    entity:
    package entity;public class Maker {
    private int MId;
    private String Lcode;
    private String Mcode;
    private String Vcode;
    private String Brand;
    private String Model;
    private String VType;
    private String Vtypepro;


    public String getVType() {
    return VType;
    }
    public void setVType(String type) {
    VType = type;
    }
    get,set方法。
    }至于:
    for(var i=0;i <data.length;i++){ 
      alert(data[i]); 
    }
    返回的是N个
    [object Object] 
      

  6.   

    你这样是取不到得,你直接把结果集rs放list中了, 那怎么行 
    while(rs.next){ 
        list.add(rs.getString("Brand")); 
        list.add(rs.getString("Model")); 
        ...... 
    } jsp页面: 
    for(var i=0;i <data.length;i++){ 
      alert(data[i].Mcode); /这样些就可以了
      

  7.   

    按你原来的程序是alert(data[i].Lcode);
      

  8.   

    不行啊,返回undefined,帮我看看配置有没有问题,行不
      

  9.   

    <script type="text/javascript" src="/Cars/dwr/interface/MakerBiz.js"></script>
    <script type="text/javascript" src="/Cars/dwr/engine.js"></script> <script type="text/javascript" src="/Cars/dwr/util.js"></script>
    这个事JSP页面引入的
      

  10.   

    怪异啊
     
    alert(data.MId);返回正常
    alert(data.VType);返回正常其他属性都返回undefined...
    奇怪
    高手,快来啊
      

  11.   

    我现在遇到的问题跟你的一模一样,总是返回undefined,我在网上查了很多资料,都没有找到能够把list的的代码循环出来的方法,刚才看了一个帖子,说你把java中的返回值list改成map类型就能读出来了,你可以试试,我正准备这样做!希望你解决之后回个贴!
      

  12.   

    试了下不行啊,不过我写了一个小例子,是用list的完全没有问题,可是我写的没什么区别啊,不知道是怎么回事,会不会跟我的字段名大小写,或者dwr.xml的配置有关呢,我写的小例子,只引入一个类,会不会是引入类太多了,咋的......闹不明白
      

  13.   

    我现在遇到的问题跟你的一模一样,下面是我的问题的描述
    http://topic.csdn.net/u/20090906/13/5b559ed3-1847-44da-a12d-1785c7062bd9.html?seed=319138375&r=59615050#r_59615050
    总是读不出list中的值,但是在java方法里确实能取到值,页面调用时就返回undefined!
      

  14.   

    你的BEAN的属性 是不是有开头有大写的成员变量,改成小写的试试