我的页面现在有一个ext tabpanel ,其中的选项卡我想和数据库联动从而完成动态加载 
 部分的脚本代码如下:
                    title: 'Panel1',
                    id:'panel1',
                    tools: tools,
                    xtype:'tabpanel',
                    collapsible: true,
                    draggable:true,
                    activeTab:0,
                    items:[ autoLoad:'initDefault.aspx']
后台返回的json格式如下 
        Response.Write("{title:'222',html:'222'},{title:'333',html:'333'}");可是为什么ext tablepanel页面总是报格式的错误导致页面无法加载,查改了半天,无果,请高手指点下,谢谢 

解决方案 »

  1.   

    在tabpanel已经创建后,才发送请求到'initDefault.aspx'去请求
    "{title:'222',html:'222'},{title:'333',html:'333'}",
    所以会报错,后台传送的字符串需要在tabpanel创建之前传到页面上,这样才可以正确生成。
    建议可以这样:Ext.Ajax.request({
    url: 'initDefault.aspx',
    timeout: 10000,
    success: function(response, opts) {
    var obj = eval(response.responseText);
    //此时创建tabpanel,将item设置为obj,后台传送的字符串设置                         为"[{title:'222',html:'222'},{title:'333',html:'333'}]",
    },
    failure: function(response, opts) {

                    }
    });
      

  2.   

    autoLoad不是应该在Panel的items[]开始加载的时候才开始运行的么?然后将后台返回的字符串直接嵌套进items[]元素中?
      

  3.   

    一般里面的元素都要在页面生成时,已经加载到页面上,然后用items[]时候才会正常,即还未执行创建tabpanel的js,item就已经加载上了。可以用response.write或其他方式给页面注册脚本。但autoLoad是页面生成后,然后在发请求到后台请求数据,所以当Ext创建tabpanel时,发现items为空,就报错了。
      

  4.   

    受教了!我现在换了另一种方法添加tabvar conn = new Ext.data.Connection({   
            autoAbort: false,   
            disableCaching: false,   
            extraParams: {   
                params: 'Update'  
            },   
      
            method: 'get',   
            timeout:1000000,   
            url: 'initDefault.aspx'  
        });    
     
            conn.request({   
                success: function(response) {   
                var text=Ext.util.JSON.decode(response.responseText);
             
                for(var i=0;i<text.length;i++)
                {
                  var panel=new Ext.Panel
                  ({
                   
                     title:text[i].title,
                     html:text[i].html              });
               //html:'1'   这样写死在里面也不行
                  Ext.getCmp("panel1").add(panel);
                  Ext.getCmp("panel1").setActiveTab(0);
                  
                 }                
                   
                },   
                failure: function() {   
                    Ext.Msg.alert('warn', 'failure');   
                }   
                
            });   后台输出的json:[{title:'222',html:'222html'},{title:'333',html:'333html'},{title:'444',html:'444html'}]能添加进去选项卡,但是每个panel里面的html:这个属性都是空的,即使我给它设置了一个默认的值 比如
    html:'11'所有的选项卡也不会显示下面的html内容 ,只是有几个空的tab头摆在那里,请问这是什么情况?
      

  5.   


     把“ items:[ autoLoad:'initDefault.aspx']”
     改成 items:[ "@@REPLACE@@"]
     在后台读取这个js文件 把 “@@REPLACE@@” 替换为“{title:'222',html:'222'},{title:'333',html:'333'}”
      

  6.   

    在html文件中可以这样引用js文件
        <script src="url.ashx?url=getJS" type="text/javascript"></script>
      

  7.   

    items:[ autoLoad:'initDefault.aspx']
    这样的写法是错的。
      

  8.   

    tabpanel没记错的话,应该是默认必须有一个tab,即在创建tabpanel的时候,至少要有一个tab,可以在创建panel1的时候,先写死一个tab试试
      

  9.   


    s000rd ,添加了一个默认的tab,显示问题解决了 ,zoujp_xyz这位朋友的指点也给了我另一条思路,谢谢二位高手的指点~
      

  10.   

    但是为什么要加一个默认的tab呢?这个默认的tab加上是没有用的啊,有没有其他的方法解决
      

  11.   

    请问为什么要有默认的tab呢,我要是加一个默认的tab是没有用的,怎么办
      

  12.   

    真他妈逼视csdn,非他妈登录才能看正确,正确的也是瞎几把正确