用ext3+struts2,显示表格,firebug报错l is undefined

ext代码:
[code="java"]Ext.onReady(function(){

var cm_medicine = new Ext.grid.ColumnModel([
{header : '药品名称(中文)',dataIndex : 'medNameCN'},
{header : '药品名称(英文)', dataIndex : 'medNameEN',sortable : true},
{header : '类型', dataIndex : 'medMode',menuDisabled : true},
{header : '类别', dataIndex : 'medSortName',menuDisabled : true},
{header : '单位', menuDisabled : true,dataIndex : 'medUnit'},
{header : '价格',dataIndex : 'medPrice',sortable : true},
{header : '生产厂家',dataIndex : 'medFactory',sortable:true},
{header : '创建人', dataIndex : 'medCreater',sortable : true}]
);
var ds_medicine = new Ext.data.Store({
url : 'findAllMedicine.action',
reader : new Ext.data.JsonReader(
{totalProperty : 'totalProperty',root : 'root'},
[{name : 'medId',type : 'int'},
{name : 'medNameCN',type : 'string'},
{name : 'medNameEN',type : 'string'},
{name : 'medCreater',type : 'string'},
//{name : 'medEDate',type : 'date'},
{name : 'medFactory',type : 'string'},
{name : 'medGuiGe',type : 'string'},
//{name : 'medInDate',type : 'date'},
{name : 'medMode',type : 'string'},
{name : 'medNote',type : 'string'},
//{name : 'medPDate',type : 'date'},
{name : 'medPL',type : 'string'},
{name : 'medPrice',type : 'float'},
{name : 'medUnit',type : 'string'},
{name : 'medUse',type : 'string'}
//{name : 'medSortId',mapping:'medSort.medSortId',type : 'int'},
//{name : 'medSortName',mapping:'medSort.medSortName',type : 'string'}

])

});
ds_medicine.load();
var grid_medicine = new Ext.grid.GridPanel({
region : 'center',
loadMask : {msg : '请稍候...'},
enableColumnMove : false,
cm : cm_medicine,
ds : ds_medicine,
sm : new Ext.grid.RowSelectionModel({singleSelect : true}),

viewConfig : {forceFit : true}
//plugins : expander,

// tbar : [btn_add_medicine, '-',btn_edit_medicine, '-', btn_del_medicine, '-',
// text_search_medicine,btn_search_medicine],
// bbar : new Ext.PagingToolbar({
// pageSize : 25,
// store : ds_medicine,
// displayInfo : true,
// displayMsg : '第 {0} - {1} 条 共 {2} 条',
// emptyMsg : "没有记录"
// })

});
var medicine_panel = new Ext.Panel({
title : '药品管理',
iconCls : 'icon-plugin',
region : 'center',
border : 'layout',
frame : true,
layout:'border',
defaults: {
collapsible: true,
split: true
},
items: [{
region:'center',
layout : 'border',
items : [grid_medicine]
}]
});
var viewport = new Ext.Viewport({
layout:'border',

         items:[medicine_panel]
     });

});[/code]
Action:
[code="java"]

medicineInfos

    </result>
 </action>

[/code]
Action方法:
[code="java"]
public String findAll(){
medicineInfos=medicineInfoManager.searchWithNameCN("");
totalProperty=medicineInfos.size();
System.out.println("listsize:"+totalProperty);
return SUCCESS;
}[/code]

Firebug的错误:
Break on Error
l is undefined
Ext.DomHelper=function(){var s=null,j=/^(.....

后台输入得知找到了8条记录,刚学EXT,还有很多东西弄不清楚,希望各位大哥解答一下。。。

return SUCCESS;值是为 success 吗?
还有medicineInfos 提供了getMedicineInfos 函数吗?
或者把你action代码发来看看

其他浏览器下报错吗?JS错误你这样贴代码上来不容易解决,建议采取排除法依次删除怀疑有问题的代码。

吧medicineInfos 去了

{totalProperty : 'totalProperty',root : 'root'}, 改成
{totalProperty : 'totalProperty',root : 'medicineInfos'},

medicineInfos //设置json插件解析那个属性 所以要去了。
{totalProperty : 'totalProperty',root : 'medicineInfos'}, //root totalProperty ,设置映射 action属性

return SUCCESS; 需要对应struts result name属性 result type 必须是json

或者直接访问 findAllMedicine.action 吧json数据发过来看看

你这样写吧.
struts.xml :

action :
action 中添加一个方法:
protected String returnJSON(String json) {
if(json == null)return null;
try{
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain; Charset=UTF-8");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write(json);
}catch(Exception e){
e.printStackTrace();
}
return null;
}

调用的action方法:这样写
把你要反悔到前段的json 转发成字符串,使用 returnJSON(String json) 这个方法 返回,
如:
public String findAll(){

medicineInfos=medicineInfoManager.searchWithNameCN("");

totalProperty=medicineInfos.size();

//这里吧你的对象 medicineInfos 转化成你前台要返回的json格式数据
//如:String json = getJson(medicineInfos);
return returnJSON(json);

}