我的页面现在有一个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页面总是报格式的错误导致页面无法加载,查改了半天,无果,请高手指点下,谢谢
部分的脚本代码如下:
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页面总是报格式的错误导致页面无法加载,查改了半天,无果,请高手指点下,谢谢
"{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) {
}
});
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头摆在那里,请问这是什么情况?
把“ items:[ autoLoad:'initDefault.aspx']”
改成 items:[ "@@REPLACE@@"]
在后台读取这个js文件 把 “@@REPLACE@@” 替换为“{title:'222',html:'222'},{title:'333',html:'333'}”
<script src="url.ashx?url=getJS" type="text/javascript"></script>
这样的写法是错的。
s000rd ,添加了一个默认的tab,显示问题解决了 ,zoujp_xyz这位朋友的指点也给了我另一条思路,谢谢二位高手的指点~