EXTJS,SERVLET后台返回数据火狐无法获取,且报错:uncaught exception: [object Object]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了EXTJS,SERVLET后台返回数据火狐无法获取,且报错:uncaught exception: [object Object]相关的知识,希望对你有一定的参考价值。

我通过表单形式将前IN台数据传给后台SERVLET,然后SERVLET返回数据给前台,其中通过STRING字符串,JSON数据格式,火狐都报错,uncaught exception: [object Object] ; 而IE均能通过先显示 。
部分关键代码如下:

JSP:
url:"/extjs2.1/servlet/SimpleServlet" ,
listeners:
'actioncomplete': function(form, action)alert('post success'),
'actionfailed': function(form, action)alert('post failure')


SERVLET:
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Cache-Control","no-cache");
JSONObject json = new JSONObject() ;

try
JSONArray members = new JSONArray();
for(int i=0;i<2;i++)
JsonBean bean = new JsonBean() ;
bean.setAge(String.valueOf(i)) ;
bean.setName("韩美美") ;
JSONObject member = new JSONObject()
.put("name", "张小"+i)
.put("age", "28")
.put("email", "test@test.com")
.put("gf" , bean) ;
members.put(i, member);

json.put("jobs", members);
catch(Exception e)
e.printStackTrace();

System.out.println(json.toString());
response.getWriter().write(json.toString());
尝试过的反馈数据:
1: "success"
2:success:true , data:'xxx'
3:"jobs":["email":"test@test.com","age":"28","name":"张小0","email":"test@test.com","age":"28","name":"张小1"]
IE都能通过,火狐报同样的错误uncaught exception: [object Object]

参考技术A 你看一下,你的火狐版本是几点几的?可能是版本问题.....我好像以前刚开始学的时候也遇到过这个问题。。。。你试试重装一个火狐,看看能不能解决。。。祝你好运

ExtJs 3.4:从网格中获取所有记录并将它们传递到 servlet

【中文标题】ExtJs 3.4:从网格中获取所有记录并将它们传递到 servlet【英文标题】:ExtJs 3.4 : Get all records from a grid and pass them into a servlet 【发布时间】:2014-02-04 06:46:56 【问题描述】:

我有一个网格存储,我想从该网格中获取所有记录并将它们推送到一个数组中。而且我还想将这个数据数组传递给一个 servlet 以将它们保存在数据库中。这是我的尝试。

var tourData = plannedGridStore.getRange();
var gridData = new Array();
tourData.each(function (record) 
    gridData.push(record.data);
);

但我的萤火虫控制台说

.each(function (record)  is not a function

我正在使用 ExtJs 3.4。我的代码有什么问题?

而且我还需要知道如何将我的 gridData 数组传递给 servlet。

请帮帮我

干杯

【问题讨论】:

您在函数的最后一行缺少结束 ,这是一个错字吗? 不不。我发这个问题的时候搞错了 【参考方案1】:

Ext.data.Store getRange 方法返回记录数组。对于迭代这个数组,你可以使用Ext.each() 方法:

Ext.each(tourData, function (record) 
    gridData.push(record.data);
);

要将数组数据发送到服务器,您可以使用Ext.Ajax.request 方法。您不能将数组作为请求参数传递,因此首先您必须使用 Ext.util.JSON.encode() 方法将其编码为 JSON。

Ext.Ajax.request(
    url: 'YOUR_URL',
    params:  
       gridData: Ext.util.JSON.encode(gridData)
    
);

【讨论】:

这很好用。非常感谢。你能告诉我,我应该在我的 servlet 中接收这个 gridData 数组吗?【参考方案2】:

如果你使用的是 POST,你可以做一些非常简洁的事情,比如:

Ext.Ajax.request(
    url: 'url',
    jsonData: Ext.pluck(store.getRange(), 'data')
);

【讨论】:

很高兴了解Ext.pluck,它在这种情况下非常有效,谢谢!

以上是关于EXTJS,SERVLET后台返回数据火狐无法获取,且报错:uncaught exception: [object Object]的主要内容,如果未能解决你的问题,请参考以下文章

ExtJs 3.4:从网格中获取所有记录并将它们传递到 servlet

extjs5 grid如何实现根据后台返回的数据 合并相应的单元格或是行数

Extjs的form跨域提交文件时,无法获取返回结果

extjs4 前台导出grid数据 生成excel,数据量大后台无法接收到数据

使用 DAO servlet 和 MYSQL 无法从查询中获取返回,堆栈跟踪返回 null

servlet怎么从浏览器地址栏获取?后面的数据