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.0 表单提交Demo

    在使用Ext Ajax提交表单前,通常需要先将表单数据序列化为JSON或URL编码格式。ExtJs 4.0的FormPanel对象提供了`getForm()`方法获取表单实例,然后通过`form.submit()`或`form.serialize()`方法完成数据的序列化。 ...

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

    在本篇文章中,我们将深入探讨如何使用Extjs4中的FormPanel组件从后台加载JSON数据,并将其映射到表单的各个字段中进行显示。这是一项非常实用的技术,尤其是在需要动态填充表单的情况下。 ### 一、Extjs4 ...

    extjs+servlet+json简单应用

    ExtJS中的Ajax类提供了与服务器交互的能力,它支持发送GET和POST请求,以及处理JSON、XML等多种数据格式的响应。在本例中,ExtJS将作为前端,通过Ajax调用Servlet来获取或提交数据。 Servlet在Java Web应用中扮演着...

    ExtJs 表单提交登陆实现代码

    首先,实现ExtJs表单提交和登录效果通常涉及以下几个步骤: 1. 在ExtJs子类中添加单击提交事件处理函数。这一过程涉及到使用ExtJs框架提供的事件监听机制,它允许开发者为特定组件绑定自定义事件处理逻辑。 在提供...

    form表单加载复杂json数据

    当我们需要在表单中加载复杂的JSON数据时,ExtJS提供了丰富的功能来实现这一需求。 首先,让我们了解什么是JSON(JavaScript Object Notation)。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...

    learning extjs 中文版 表单提交

    EXTJS表单可以与模型(Model)进行数据绑定,模型定义了数据字段及其结构,表单字段与模型字段对应,这样可以方便地进行数据的读取和写入。通过`loadRecord`方法可以将模型数据加载到表单,而`getRecord`则能获取...

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

    总的来说,要解决Extjs4表单提交后无法进入success函数的问题,关键在于确保服务器返回的json数据格式正确,且必须包含一个标识成功的属性,即success: true。同时,还需要确保form组件的其他配置和服务器端的响应...

    Ajax+JSON 提交数据的演示

    - **数据封装**:在Ajax请求中,JSON格式被用来封装要发送到服务器的数据,如表单字段值。这可以通过JavaScript对象创建,然后转化为JSON字符串。 ```javascript let data = { username: 'John Doe', password: ...

    ExtJs实现数据加载和提交经典代码

    这意味着,如果HTTP状态码不是200,则即使服务器返回的数据格式正确,也会被视为失败,并调用`failure`回调。 例如,在`success`配置项中可以定义如下格式: ```javascript { success: true, data: { ...

    ExtJs获取表单元素的值

    下面将从几个方面展开讨论:ExtJs表单的基本概念、获取表单元素值的方法、实际应用中的技巧以及一些进阶用法。 ### 一、ExtJs表单的基本概念 ExtJs是一款基于JavaScript的开源前端框架,用于构建交互式的Web应用...

    extjs的数据传递

    以下是一个典型的服务器响应示例,展示了JSON数据格式的基本结构: ```json { "success": true, "data": { "clientName": "Fred.Olsen Lines", "portOfLoading": "FXT", "portOfDischarge": "OSL" } } ``` -...

    struts2-hibernate-spring-Extjs-json.rar_JSON_extjs_extjs json st

    ExtJS支持JSON数据格式,使得与服务器端的数据交换变得高效。 5. **JSON**: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在Web开发中,JSON常...

    struts2+extjs+json整合实例

    7. **解析并渲染数据**:ExtJS接收到JSON数据后,自动将其映射到Store,进而更新与其关联的UI组件。 通过这样的整合,开发者可以利用Struts2的强大控制层,ExtJS的富客户端功能,以及JSON的高效数据交换能力,构建...

    extjs数据存储与传输详解

    **高级Store**是指使用了更多复杂功能的Store,例如使用了自定义的Proxy和Reader来处理非标准的数据格式,或者使用了复杂的排序、过滤逻辑等。 ### 八、EXT中的Ajax **EXT中的Ajax**主要指的是通过Ext.data....

    EXT提交表单,ASP.NET

    1. **创建接收端点**:创建一个ASP.NET页面或Web API控制器方法,这个方法会接收EXTJS表单提交的数据。数据通常以POST方式发送,ASP.NET可以通过`Request.Form`或`Request.InputStream`来获取。 2. **处理数据**:...

    EXTJS json struts2制作登陆窗口

    总的来说,这个示例展示了如何结合EXTJS的前端功能和Struts2的后端处理,以及JSON作为数据交换格式,来实现一个完整的登录窗口。EXTJS提供了美观的用户界面,Struts2处理业务逻辑和数据校验,而JSON则简化了数据的...

    纯web在线ExtJs表单设计器

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

    ExtJS4+JSON+Servlet(Struts2)实现登录验证

    后端处理完验证逻辑后,也会以JSON格式返回结果,如“成功”或“失败”,以及可能的错误信息。 接下来,Servlet是Java Web开发中的核心组件,用于处理HTTP请求和响应。在登录验证中,Servlet接收来自前端的JSON请求...

    Strust2+Json+ExtJs 6个程序代码(经典)

    1. **登录注册系统**:利用Struts2处理表单提交,ExtJS负责前端界面展示和用户交互,Json作为数据交换格式传输登录或注册信息。 2. **数据展示**:Struts2 Action处理后台数据,将结果转化为Json格式,ExtJS的Grid...

    @@@extjs+struts2+json plugin的例子

    `Struts2`可以通过其内置的JSON插件方便地将Java对象转换为JSON格式,然后发送给`ExtJS`,后者可以解析JSON数据并更新UI组件。 在这个例子中,开发者可能创建了一个`Struts2` Action,该Action处理来自`ExtJS`的...

Global site tag (gtag.js) - Google Analytics