转自:http://weizhilizhiwei.iteye.com/blog/1671431
之前总是封不起Extjs中form.submit()提交与Ext.Ajax.request()的区别,现在仍是分不清,但是知道怎么用不会出错了。
方案1:
java action中的代码
- String datastring = "total : " + rehpage.getCount() + ", root : [";
- if (rehpage != null) {
- datastring += buildJsonByPage(rehpage);
- }
- datastring = datastring + "]";
- StringBuffer buff = new StringBuffer("{success:true,mes:{");
- buff.append(datastring);
- buff.append("}}");
- System.out.println("datastring is: " + buff.toString());
- request.setAttribute("responseText", buff.toString().replaceAll("\r\n",
- " ").replaceAll("\n", " "));// 将拼接好的数据放到request
- return SUCCESS;
对用的Extjs中的代码为:
- Ext.Ajax.request({
- url : "./rehearsal/queryTableData.action",
- params : {
- search_place : rehearsal_place,
- search_time : dt
- .format('Y-m-d'),
- search_valuation : null,
- search_subject : search_subject
- },
- waitMsg : '正在提交数据',
- waitTitle : '提示',
- method : "POST",
- success : function(response) {
- var respText = Ext.util.JSON
- .decode(response.responseText);
- if (respText.success) {
- szcdc_rehearsal_one_grid
- .getStore()
- .loadData(respText.mes);
- }
- },
- failure : function(response) {
- Ext.Msg.alert('提示',
- "操作失败:输入非法字符!!!");
- }
- });
- }
方案2:
java action中的代码是:
- String datastring = "total : " + rehpage.getCount() + ", root : [";
- if (rehpage != null) {
- datastring += buildJsonByPage(rehpage);
- }
- datastring = datastring + "]";
- StringBuffer buff = new StringBuffer("{success:true,");
- buff.append(datastring);
- buff.append("}");
- System.out.println("datastring is: " + buff.toString());
- request.setAttribute("responseText", buff.toString().replaceAll("\r\n",
- " ").replaceAll("\n", " "));// 将拼接好的数据放到request
- return SUCCESS;
对应的Extjs代码为:
- search_form.submit({
- url : "./rehearsal/queryTableData.action",
- baseParams : {
- search_place : rehearsal_place,
- search_time : search_time,
- search_valuation : search_valuation,
- search_subject : search_subject
- },
- waitMsg : '正在提交数据',
- waitTitle : '提示',
- method : "POST",
- success : function(form, action) {
- // 得到数据
- var result = Ext.util.JSON
- .decode(action.response.responseText);// 就可以取出来。如果是数组,那么很简单
- // 把数据放到结果里面
- szcdc_rehearsal_one_grid.getStore()
- .loadData(result);
- },
- failure : function(form, action) {
- Ext.Msg.alert('提示', "操作失败:输入非法字符!!!");
- }
- });
将form中的字段转成json格式:form.getForm().getFieldValues();