0 0

extjs表单提交后,数据打印后不是json格式5

前台数据{
                    id:'user_update',
                    text: '编辑',
                    maxWidth:55,
                    handler:function(){
                        var user_form = this.up('form');
                        if(user_form.getForm().isValid()){
                            user_form.getForm().submit({
//                                url: 'updateUserServlet',
                            url:'MyJsp.jsp',
                           
                                method:'post',
                               
                                submitEmptyText: false,
                                waitTitle:'请等待',
                                waitMsg: '正在编辑用户...',
                                params : {
                                    id : userid,
                                    userName : userName,
                                    userPermiss : userPermiss,
                                    description : description,
                                    userPasswd : userPasswd
                                },
                               
                                success:function(form,action){
                                    var response = Ext.decode(action.response.responseText);
                                    Ext.Msg.alert('提示', response.msg);
                                    userStore.load();
                                },
                                failure:function(form,action){
                                    Ext.Msg.alert('提示', '编辑用户失败!');
                                }
                            });
                        }else{
                            Ext.Msg.alert('提示', '数据验证失败!');
                        }
                    }
                }
后台代码:<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.BufferedReader" %>
<%@ page import="net.sf.json.*" %>
<%
BufferedReader in=request.getReader();
StringBuffer jsonStr=new StringBuffer();
String str="";
while((str=in.readLine())!=null){
jsonStr.append(str);
}
JSONObject jsonObj= JSONObject.fromObject(jsonStr.toString());
String name= jsonObj.getString("userName");

String msg="";
out.print("asdf");
out.print(name);

%>
服务器报错为:严重: Servlet.service() for servlet jsp threw exception
net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1 of id=3&userName=yy&userPermiss=3&description=&userPasswd=usd1111
经过打印后,得到的数据为id=3&userName=yy&userPermiss=3&description=&userPasswd=usd1111不是json格式,请问哪里有问题??
2013年11月18日 11:58

5个答案 按时间排序 按投票排序

0 0

采纳的答案

用最简单的方式啊,你的代码太复杂了

		Enumeration<String> em=request.getParameterNames();
		String pm="";
		JSONObject jsonObj = new JSONObject();
		while(em.hasMoreElements()){
			pm = em.nextElement();
			jsonObj.put(pm, request.getParameter(pm));
		}
		
		String name= jsonObj.getString("userName");

2013年11月18日 16:48
0 0

Form提交一般都是 form的编码格式,而不会是json的

返回结果要求json罢了。

一般来说,post一个json反而比较麻烦。
因为http协议 定义的提交格式限定了,直接修改post数据体为json,要花点心思才能实现(不是说不能实现,只是 懒得研究了。)。

用form的编码方式,tomcat会自动解码,然后就可以用request.getParameter("key")
去值了。

可以把json作为一个 form的参数的内容提交。

例如
params : {
content:Ext.encode(
{
id : userid,
userName : userName,
userPermiss : userPermiss,
description : description,
userPasswd : userPasswd
})
}

2013年11月19日 09:40
0 0

params: {         
         form.getForm().getValues()   //取出表单所有值     
     },       

2013年11月18日 21:45
0 0

肯定不会是JSON格式的啊 ,甚至你给出的那段代码里根本就没有JSON的影子.

BufferedReader in=request.getReader();
StringBuffer jsonStr=new StringBuffer();
String str="";
while((str=in.readLine())!=null){
jsonStr.append(str);
} 

jsonStr 输出为id=3&userName=yy&userPermiss=3&description=&userPasswd=usd1111 也很正常.

如果你要使用json的话就需要手动构造出来(有些框架是有在后台帮你构造后,传到后台的.)
使用getParameter将参数一个一个取出来再构造出jsonObject, 不过就你这个例子直接用getParameter就可以了,再构造JsonObject就有点多此一举了

2013年11月18日 16:27
0 0

错误不是很明显么,json格式的数据必须包含{}
把这里改下试试

StringBuffer jsonStr=new StringBuffer("{"); 
String str=""; 
while((str=in.readLine())!=null){ 
jsonStr.append(str); 
} 
jsonStr.append("}");

2013年11月18日 14:53

相关推荐

    Extjs4的FormPanel从后台load json数据的要点

    Extjs4 表单从数据库读取数据映射到对应的字段中显示

    form表单加载复杂json数据

    form表单加载复杂json数据

    纯web在线ExtJs表单设计器

    ExtJs表单设计器是一个纯web在线设计器。通过左边的控件树进行拖拉节点到设计区进行设计和布局。设计区是通过html进行展示,尽可能的达到所见即所得的效果。预览区是通过设计区的html进行解析拼装ext的json配置,...

    SSH+ExtJs实现表单的增删改查CRUD

    用SSH为框架,前台用Extjs,数据以json格式封装,数据库采用mysql。有布局,有树形结构,有可编辑表单异步刷新,支持模糊查询。

    一个纯WEB在线EXTJS表单设计器

    ExtJs表单设计器是一个纯web在线设计器。通过左边的控件树进行拖拉节点到设计区进行设计和布局。设计区是通过html进行展示,尽可能的达到所见即所得的效果。预览区是通过设计区的html进行解析拼装ext的json配置,...

    解决Extjs4中form表单提交后无法进入success函数问题

    1.首先得确定json格式没问题 2.在返回的json中一定得加上success为true,因为只有为true,才会进入success函数 因为刚结束Extjs4,这个错误我调试了半天。

    精通JS脚本之ExtJS框架.part2.rar

    13.1 XML/JSON数据格式比较 13.2 容器类MixedCollection 13.3 数据存储基本单元Record与dataField 13.3.1 dataField 13.3.2 Record 13.4 数据存储store 13.4.1 数据载入 13.4.2 对数据进行排序 13.4.3 从...

    extjs4.0 实现了主页面框架 动态菜单 例子 表单 ajax

    extjs4.0 实现了主页面框架(主框架使用Ext.Viewport,banner使用Ext.panel.Panel,通过toolbar来放置按钮),包括左侧动态菜单实现(采用Ext.tree.Panel)动态从数据库加载数据来显示菜单(后台代码也在了通过json...

    轻松搞定Extjs_原创

    三、提交表单至服务器 97 四、小结 100 第十六章:更多表单组件 102 一、您能说出哪些表单组件呢? 102 二、表单组件关系图 102 三、组件配置选项介绍 103 四、完整源代码 107 五、小结 112 第十七章:悬停提示与...

    ExtJSWeb应用程序开发指南(第2版)

    4.3.3 Ajax模式的表单数据提交 4.3.4 标准模式的表单数据提交 4.3.5 使用Direct技术 4.4 本章小结 第5章 面板及布局类 5.1 面板panel 5.1.1 认识Ext.panel.Panel 5.1.2 Ext.panel.Panel的主要功能 5.1.3 ...

    ExtJs与Java通信

    最完善的ExtJS与Java后台通信,两种数据传输第一种采用的是JSon,第二种是采用直接提交Form表单,个人觉得ExtJS比Flex与Java通信要简单写,呵呵。谁有WebService学习资料告诉我啊,要自己写WebService了哈。

    精通JS脚本之ExtJS框架.part1.rar

    13.1 XML/JSON数据格式比较 13.2 容器类MixedCollection 13.3 数据存储基本单元Record与dataField 13.3.1 dataField 13.3.2 Record 13.4 数据存储store 13.4.1 数据载入 13.4.2 对数据进行排序 13.4.3 从...

    EXTJS+Domino的应用例子-修正

    EXTJS+Domino的应用例子 其中包括视图组件,表单封装类。 如果传递json数据,并使用extjs相关组件解析 等。有一定的参考价值

    EXTJS+Domino的应用例子

    EXTJS+Domino的应用例子 其中包括视图组件,表单封装类。...如果传递json数据,并使用extjs相关组件解析 等。有一定的参考价值 此数据库有强度加密,请不要下载了,修正地址 http://download.csdn.net/source/969800

    Ext Js权威指南(.zip.001

    7.3.4 格式化提交数据:ext.data.writer.writer、ext.data.writer.json和ext.data. writer.xml / 322 7.3.5 writer对象的配置项 / 325 7.4 数据模型 / 326 7.4.1 概述 / 326 7.4.2 数据类型及排序类型:ext....

    树形表格菜单 动态添加节点/动态删除节点/动态移动节点

    5.完美支持json格式数据,支持xml(需转换) 6.支持ajax加载节点 7.事件驱动 8.可以动态根据列内容排序 9.简化函数参数,利用{} object输入参数,风格类似Extjs 10.树状结构可以选择出现在某一列,不一定要在第一列 11....

    基于Extjs的开源控件库ExtAspNet英文版 v3.1.9

    注:ExtAspNet 基于一些开源程序,比如ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor. +2012-08-18 v3.1.9 -修正other/addtab.aspx示例的JS错误和BoundField使用Tooltip的错误(Dennis_Liu)。 +修正Window的...

    基于Extjs的开源控件库ExtAspNet中文版 v3.1.9

    注:ExtAspNet 基于一些开源程序,比如ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor. +2012-08-18 v3.1.9 -修正other/addtab.aspx示例的JS错误和BoundField使用Tooltip的错误(Dennis_Liu)。 +修正Window的...

    ExtAspNet_v2.3.2_dll

    注:ExtAspNet基于一些开源的程序ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor。 示例: http://extasp.net/ 开源: http://extaspnet.codeplex.com/ 博客: http://sanshi.cnblogs.com/ 邮箱: sanshi.ustc@gmail...

    EXT教程EXT用大量的实例演示Ext实例

    4.6. form提交数据的三重门 4.6.1. ext中默认的提交形式 4.6.2. 使用html原始的提交形式 4.6.3. 单纯ajax 4.7. 验证苦旅 4.7.1. 不能为空 4.7.2. 最大长度,最小长度 4.7.3. 借助vtype 4.7.4. 自定义验证...

Global site tag (gtag.js) - Google Analytics