ExtJs 不加载JSON-LIB生成的JSON数据
1、直接访问对应的action,可以正确的输出json数据如下:
{"items":[{"id":1,"name":"帅哥"},{"id":2,"name":"美女"}]}
2、Extjs代码如下:
function init() {
var sexStore = new Ext.data.Store({
proxy : new Ext.data.HttpProxy({
url : 'sex.action'
}),
reader : new Ext.data.JsonReader({
root : "items",
fields : [ 'id', 'name' ]
})
});
sexStore.load();
var sexField = new Ext.form.ComboBox({
name : 'sex',
store : sexStore,
fieldLabel : '性别',
mode : 'remote',
triggerAction : 'all',
valueField : 'id',
displayField : 'name',
hiddenName : "sexId",
minListWidth : 220,
readOnly : true
});
var formPanel = new Ext.form.FormPanel({
labelAlign : 'right',
labelWidth : 60,
width : 280,
height : 100,
title : '表单',
frame : true,
items : [ {
layout : 'form',
items : [ sexField ]
} ]
});
formPanel.render("form");
}
Ext.onReady(init);
3、Extjs界面加载正常,但是数据没有加载,求解,谢谢。
我已将JSON生成方式改为struts的插件模式,依然是数据可以正确生成,但是无法加载,继续求解,谢谢。
生成的json如下:
{"sex":[{"id":1,"name":"帅哥"},{"id":2,"name":"美女"}]}
js如下:
var sexJson=new Ext.data.JsonStore({
url:"sex.action",
root:"sex",
fields:[{name:"id",mapping:"id",type:"int"},{name:"name",mapping:"name",type:"string"}]
});
sexJson.load();
struts.xml代码如下:
<struts>
<!-- 设置Spring插件自动装配 的方式 -->
<!-- <constant name="struts.objectFactory.spring.autoWire" value="type"/> -->
<constant name="struts.objectFactory" value="spring"></constant>
<constant name="struts.objectFactory.spring.autoWire" value="type"/>
<package name="org.leon.test" namespace="/" extends="json-default">
<action name="sex" class="org.leon.kxw.action.SexAction">
<result name="success" type="json"/>
</action>
<action name="*_jsp">
<result>/WEB-INF/jsp/{1}.jsp
</result>
</action>
</package>
</struts> 展开
我试了你这段代码,用的不是struts,url用的是jsp的形式,数据加载没有问题,也就是说你的代码没有问题!如图
我现在开发用的是dwr+extjs,struts+extjs原先也用过,你自己试试看吧~~~
<package name="system" namespace="/system" extends="json-default">
<action name="listWallpaper" class="ListWallpaperAction">
<result type="json" />
</action>
</package>
应该需要引入jsonplugin-0.34.jar这个包
你的js代码没有错,你{"sex":[{"id":1,"name":"帅哥"},{"id":2,"name":"美女"}]}生成的也对,因此错误应该出现在前后交互上。
我把我原来弄出的那个简要的给你发下,你看看,上面那个是struts2的配置
js中的url是url : "system/listWallpaper.action"
ListWallpaperAction 类是:
import java.util.ArrayList;
import java.util.List;
import model.WallPaper;
import com.opensymphony.xwork2.ActionSupport;
public class ListWallpaperAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private List<WallPaper> wallpapers
@Override
public String execute() throws Exception {
List<WallPaper> list = new ArrayList<WallPaper>();
WallPaper s = new WallPaper();
s.setWallpaperID("ff80808128869297012886929cb90074");
s.setWallpaperName("Blue-Curtain");
s.setWallpaperThumbnail("resources/wallpapers/thumbnails/blue-curtain.jpg");
s.setWallpaperPath("resources/wallpapers/blue-curtain.jpg");
WallPaper s1 = new WallPaper();
s1.setWallpaperID("ff80808128869297012886929cb90081");
s1.setWallpaperName("qWikiOffice");
s1.setWallpaperThumbnail("resources/wallpapers/thumbnails/qwikioffice.jpg");
s1.setWallpaperPath("resources/images/default/s.gif");
list.add(s1);
list.add(s);
this.wallpapers = list;
return SUCCESS;
}
public List<WallPaper> getWallpapers() {
return wallpapers;
}
public void setWallpapers(List<WallPaper> wallpapers) {
this.wallpapers = wallpapers;
}
}
很早弄的呢,也没再深入研究,就改用dwr了,你看看对你有帮助么,你看看你的那个,后台是否被调用到,如果调用到,那问题就是返回的东西不能被jsonstroe解析。