Ext表单加载通常是这么写的
bookForm.form.load({
waitMsg : '正在加载数据请稍后',//提示信息
waitTitle : '提示',//标题
url : 'getBookById.action',//请求的url地址
params : {bookId:bookId},
method:'post',//请求方式
success:function(form,action){//加载成功的处理函数
Ext.Msg.alert('提示','数据加载成功');
//alert(bookForm.getForm().findField("typeId").getValue());
Ext.log('上传成功。');
},
failure:function(form,action){//加载失败的处理函数
Ext.Msg.alert('提示','数据加载失败');
}
通过调用Ext.BasicForm中的doAction方法来操作的。doAction方法带有两个参数,其中第二个参数为从 load 方
法传递过来的 Ext.form.Action对象的配置数据(Config Options)。其中的success和failure属性是用于处理请
求成功或失败的函数
通过查看Action.js可以发现响应过来的数据是需要符合一定格式的,的 API文档开头就说明了响应数据包必须类似
下面的格式:
{ success: true, data: {表单id: 表单值,表单id2:表单值} }
success属性作用同上。主要是data。data用以保存表单元素的数据。格式是将表单的id作为属性名称,表单值作为
属性值。返回客户端后,ext自动分析data属性,并将各个表单值赋值到各个表单当中。
这里就要非常注意了,响应的时候查询的是一个对象,一般这么写
String json = "{success:" + isSuccess + ",data:"+book+"}";
显然这是没什么错,只要打印下json就知道了,在你没有重写对象的toString方法的情况下打印的肯定是地址了,如果你重写了toString方法也不对,因为人家要求的格式是
{ success: true, data: {表单id: 表单值,表单id2:表单值} }
这里面的表单值一定要带单引号再传回去,否则就匹配不上了
我的其中一个实体是这么重写toString的
@Override
public String toString() {
return "{author:'" + author + "', bookName:'" + bookName
+ "', typeName:'" + booktype.getTitle() + "', brief:'" + brief + "', id:'" + id
+ "', price:'" + price + "'}";
}
好了这次一定没错了,因为我重写了它要求的格式并且带上了引号
最后注意:表单的各个元素的ID值一定要一一对应喽