当前位置:编程学习 > JAVA >>

json的后台数据无法传到前台的Ext.data.store中

这是我调用json数据的Message.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="com.ebig.bean.*"%>
<%@ page import="com.ebig.function.*"%>
<%@ page import="com.ebig.util.*"%>
<%@ page import="java.util.ArrayList.*"%>
<%@ page
import="java.util.List.*,net.sf.json.JSONArray,net.sf.json.JSONObject;"%>
<%
List<Student> studentInfo;
StudentMrg smg = new StudentMrg();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<%
JSONArray json = smg.getJsonArray(smg.getStudentList());
     String data="{root:"+json.toString()+"}";
// response.getWriter().write(data);
out.write(data);
%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>

这个是Message.jsp刷出的json数据

{root:[{"age":23,"id":1,"name":"张三","sex":"男","tellphone":3.3535253535E10},{"age":20,"id":2,"name":"李四","sex":"女","tellphone":2.2344234343E10},{"age":21,"id":3,"name":"王五","sex":"男","tellphone":6.7622354454E10},{"age":22,"id":4,"name":"赵六","sex":"女","tellphone":3.4880388934E10},{"age":21,"id":5,"name":"啊啊","sex":"男","tellphone":2.3343883849E10},{"age":19,"id":6,"name":"哈德森","sex":"女","tellphone":3.8948984895E10},{"age":25,"id":7,"name":"月夜枫","sex":"男","tellphone":4.3584850485E10},{"age":17,"id":8,"name":"额居然","sex":"女","tellphone":8.3494832844E10},{"age":19,"id":9,"name":"海德堡","sex":"男","tellphone":8.9489895495E10},{"age":24,"id":10,"name":"钛合金","sex":"女","tellphone":5.6980058586E10}]}




这个是我前台的index.jsp的代码
 var reader = new Ext.data.JsonReader({
       // totalProperty : "totalProperty",// totalRecords属性由json.results得到
        root : "root", // 构造元数据的数组由json.rows得到
       // id : "rownum_", // id由json.id得到
        fields: [
            {name: 'id'},
            {name: 'name'},
            {name: 'sex'},
            {name: 'age'},
            {name: 'tellphone'}
             ]
    });

    // 构建Store
    var ds = new Ext.data.Store({
        url:'http://localhost/MyExtGridTest/Message.jsp',
        reader : reader
    });

ds.load();//初始化数据
alert(ds.getCount());

不知道为什么json数据始终传不过来,老是提示ds中的数据个数是0;求高手帮忙解决下
--------------------编程问答-------------------- url和reader放到proxy里 --------------------编程问答-------------------- 好像也没用依旧提示没0
 <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<link rel="stylesheet" type="text/css"
href="ExtJS/resources/css/ext-all.css" />
<script type="text/javascript" src="ExtJS/adapter/ext/ext-base.js">

</script>
<script type="text/javascript" src="ExtJS/ext-all.js">

</script>
<script type="text/javascript">

Ext.onReady(function() {
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([ sm, {
header : '编号',
id : 'id',
dataIndex : 'id',
editor : new Ext.grid.GridEditor(new Ext.form.NumberField({
allowBlank : false,
allowNegative : false,//不能输入减号
maxValue : 10000
}))
}, {
header : '姓名',
id : 'name',
dataIndex : 'name',
editor : new Ext.grid.GridEditor(new Ext.form.TextField({
allowBlank : false
}))
}, {
header : '性别',
id : 'sex',
dataIndex : 'sex',
editor : new Ext.grid.GridEditor(new Ext.form.TextField({
allowBlank : false
}))
}, {
header : '年龄',
id : 'age',
dataIndex : 'age',
editor : new Ext.grid.GridEditor(new Ext.form.TextField({
allowBlank : false
}))
}, {
header : '电话',
id : 'tellphone',
dataIndex : 'tellphone',
editor : new Ext.grid.GridEditor(new Ext.form.TextField({
allowBlank : false
}))
} ]);

 var reader = new Ext.data.JsonReader({
        totalProperty : "results",// totalRecords属性由json.results得到
        root : "root"// 构造元数据的数组由json.rows得到
             
    },[
            {name: 'age'},
            {name: 'id'},
            {name: 'name'},
            {name: 'sex'},
            {name: 'tellphone'}
             ]  
 
 );

    // 构建Store
    var ds = new Ext.data.Store({
    
      proxy: new Ext.data.HttpProxy({url:'http:///localhost//MyExtGridTest//Message.jsp'}),
      reader:reader
    });

ds.load({params:{start:0,limit:10}});//初始化数据
alert(ds.getCount());

var myrecord = Ext.data.Record.create([ {
name : 'id',
type : 'string'

}, {
name : 'name',
type : 'string'

}, {
name : 'sex',
type : 'string'

}, {
name : 'age',
type : 'string'

}, {
name : 'tellphone',
type : 'string'

} ]);

var grid = new Ext.grid.EditorGridPanel({
autoHeight : true,
renderTo : Ext.getBody(),
height : 300,
store : ds,
cm : cm,
sm : sm,
bbar : new Ext.PagingToolbar({
pageSize : 10, //每页显示10条数据
ds : ds,
displayInfo : true, //显示数据信息
displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条',
emptyMsg : "没有记录" //没有数据时显示的信息
}),

tbar : [
{
id : 'save',
text : '保存',
handler : function() {
var record = grid.getStore().modified[0]; //获得store中修改过得数据

var data = [];
Ext.each(record, function(item) {
data.push(item.data); //把修改过得数据放到data中
});
alert(Ext.encode(data));
Ext.lib.Ajax.request( //使用Ajax请求提交给后台  
'POST', 'SaveData', {
success : function(response) { //返回成功 
Ext.Msg.alert('信息', response.responseText,
function() {
store.reload();
});
},
failure : function() { //返回失败
Ext.Msg.alert("错误", "服务器保存数据出错!");
}
}, 'row=' + encodeURIComponent(Ext.encode(data)));
}

}, {
id : 'reflesh',
text : '刷新',
handler : function() {

alert("总共有" + ds.getCount() + "条数据");
}

}, {
id : 'add',
text : '添加行',
handler : function() {
var p = new myrecord({
id : '',
stuname : '',
sex : '',
brith : ''
});
//grid.stopEditing(); //关闭表格的编辑状态
ds.insert(0, p); //创建的Record插入store的第一行
//   grid.startEditing(0,0) //激活第一行第一列的编辑状态
}

}, {
id : 'delete',
text : '删除行',
handler : function() {
Ext.Msg.confirm('提示', '是否要删除', function(btn) {
if (btn == 'yes') {

var model = grid.getSelectionModel();
/** 
 * AbstractSelectionModel类有两个子类CellSelectionModel, RowSelectionModel-->CheckboxSelectionModel 
 * 对于EditorGridPanel获取的应该是CellSelectionModel的对象,那么就可以调用它的 
 * getSelectedCell()来获取选中的格子的数组的位置 
 */

var cell = model.getSelections();//这个是获取选中的格子在数组中的位置,如:[0,1],以数组的形式表示  
for ( var i = 0; i < cell.length; i++) {
ds.remove(cell[i]);
}

//grid.view.refresh();
} else {
alert("删除失败");
}
})
}

} ],

trackMouseOver : true,//鼠标滑过时的高亮效果
clicksToEdit : 2
//表示点击一次单元格即触发编辑 ,默认情况下该值为2

});

})


</script>


</head>

<body>

</body>
</html>
 

--------------------编程问答-------------------- var departMentStore = new Ext.data.JsonStore({
    root: "result",
    fields: ['name','value'],
     url: "<c:url value='/combox/getDepartMentInfo'/>"
});

这样即可。。。 --------------------编程问答-------------------- 我记得extjs的ajax接受返回json的时候得有个success值,先判断success是true还是false,才会走extjs里的success。
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,