ExtJs 不加载JSON-LIB生成的JSON数据

开发环境:Extjs3.3Struts2.2.11、直接访问对应的action,可以正确的输出json数据如下:{"items":[{"id":1,"name":"帅哥"... 开发环境:Extjs3.3 Struts2.2.1

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>
展开
 我来答
luffy1201
2010-12-28 · TA获得超过1523个赞
知道小有建树答主
回答量:401
采纳率:0%
帮助的人:577万
展开全部

我试了你这段代码,用的不是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解析。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式