Ext.Ajax.request({
waitMsg : '读取数据',
url : "/SLaw/system/QueryDictTreeRoot.action",
method : "GET",
callback : function(args, success, response) {
alert("001");
if(success){
alert("002");
Ext.system.sdObj = eval("("+response.responseText+")")["bean"];
alert("003");
// 数据字典管理树
Ext.system.lawdictionaryTree = Ext.extend(Ext.tree.TreePanel,{
  constructor: function(obj){
//创建根节点
this.lawdictionaryTreeRoot = new Ext.tree.AsyncTreeNode({
  text: Ext.system.sdObj.dictName,
  dictId: Ext.system.sdObj.dictId,
  dictCode: Ext.system.sdObj.dictCode,
  parentId: Ext.system.sdObj.parentId,
  orderNum: Ext.system.sdObj.orderNum,
  expanded: false
  });
Ext.system.lawdictionaryTree.superclass.constructor.call(this,{
autoScroll: true,
animate: true,
root: this.lawdictionaryTreeRoot,
enableDD: false,
  containerScroll: true,
  loader: new Ext.tree.TreeLoader({
  dataUrl: "/SLaw/system/QueryDictTree.action",
  clearOnLoad: false,
  requestMethod: "GET",
  processResponse: function(response,node,callback,scope){
         try{
  var o = eval("("+response.responseText+")")["slawDictionaryList"];
         node.beginUpdate();
         for(var i = 0, len = o.length; i < len; i++){
         var n = this.createNode(o[i]);
         if(n){
                         node.appendChild(n);
                 }
         }
         node.endUpdate();
             this.runCallback(callback, scope || node, [node]);
         }catch(e){
             this.handleFailure(response);
          }
}
  })
,
  listeners: {
"click": function(node,event){
  event.stopEvent();
  obj.removeAll();
  obj.add({
  title: "【"+node.text+"】数据字典信息",
  //距两边间距
    style:"padding:0 5px 0 5px",
     region:"center",
     layout:'fit',
     //默认选中第一个
     activeItem:0,
    enableTabScroll:true,
     layoutOnTabChange:true,
     items:[{
          height : 450,
         items : [new Ext.system.lawDictUnderPanel()]
     }]
});
  obj.doLayout();
  }
  }
  });
}
});
  }
}
});
不知道怎么回事if(success)有时能进去 有时进不去 单击就报错说 缺少对象 有时只alert(1) 有时alert(1) , 2 和 3 success 是哪里来的呢?

解决方案 »

  1.   

    success很可能是执行Action的返回值,通过回调函数传给function的。
      

  2.   

    我的action 总共三个方法
    /**
     * 查询数据字典的所有数据行
     * */
    public String queryDictTree(){
    slawDictionaryList = service.getAllDictTree();
    System.out.println("kk "+slawDictionaryList);
    return SUCCESS;
    }

    /**
     * 查询数据字典树形的根节点
     * */
    public String queryDictTreeRoot() {
    bean = service.getDictInfoById(0);
    return SUCCESS;
    }

    /**
     * 根据parentId查询一级数据字典
     * */
    public String queryFirstDict(){
    slawFirstDictList = service.getFirstDict(0);
    try {
    totalCount = service.queryAllNum();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return SUCCESS;
    }
    全是SUCCESS 了
      

  3.   

    我刚才查了一下:
    callback Function 指定Ajax请求的回调函数,该函数不管是调用成功或失败,都会执行。传递给回调函数的参数有三个,第一个options表示执行request方法时的参数,第二个success表示请求是否成功,第三个参数response表示用来执行Ajax请求的XMLHttpRequest 对象先请求QueryDictTreeRoot.action,如何请求成功的话,会执行if条件,否则就不执行了。