高分求助:一天没解决了,好人抽个空帮个忙,散分了ajax+json存List 不到Success函数

beyond667 2012-04-10 09:43:52
问题如下:
在service获取List<Project> 在action里转成json对象 再到js里来显示这个list
问题出现了,json对象死活不到success方法 只到error方法 ,后来查了一晚上 都说是json格式不正确,我也确定是json格式的问题,用正确的json格式传进去,还是没法到success,我快疯了,好人们过来帮个忙啊。用的struts1.
action层如下:
List<Project> list=applicationService.getProjectName();
JSONArray array = JSONArray.fromObject(list);
System.out.println(array.toString());
request.setAttribute("data", array);
// response.getWriter().write("{\"result\":\"true\", \"msg\":\"删除成功\"}");
response.getWriter().write(array.toString());
return null;
这里array有值 打印出来结果为[{"id":1283,"name":"Internal CR Print Smart Grade"},{"id":1284,"name":"TAL PLM Import & Export"}]
js代码如下:
function getProjName() {
alert("sss");
$.ajax( {
type : "POST",
url : "http://localhost:8080/FBTrack_PMO/transfer/getProj.fb",
dataType : "JSON",
cache : "false",
success : function(data) {
alert(data);
},
error: function(res, text) {
alert("错误信息:" + text);
}
});
}
这里如果我把dataType改成text,就可以获取到以一个html格式的数据,也能到success 的方法
如果是json 则到error 显示parsererror
大侠们救命啊,这个解决不了我几天吃不下去饭了。。。。








...全文
744 61 打赏 收藏 转发到动态 举报
写回复
用AI写文章
61 条回复
切换为时间正序
请发表友善的回复…
发表回复
li617111077 2014-11-12
  • 打赏
  • 举报
回复
请问楼主最后怎么解决的啊
xiwangliujiao 2012-04-11
  • 打赏
  • 举报
回复
用firebug调试时,可以打开控制台,找到你的页面的代码,然后一步一步的跟踪,看传到后台的参数和返回到前台的参数是不是你想要的,
VanBaston 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 58 楼 的回复:]
response.getWriter().write(array.toString()); 是你这个没关闭 和过滤器没关系的
response.getWriter().close(); 昨天不是给你写出来了么
[/Quote]

是response里的东西,不需要自己显示的关闭的,response失效前会自动处理的
chaluhe003 2012-04-11
  • 打赏
  • 举报
回复
response.getWriter().write(array.toString()); 是你这个没关闭 和过滤器没关系的
response.getWriter().close(); 昨天不是给你写出来了么
VanBaston 2012-04-11
  • 打赏
  • 举报
回复
有可能就是m.opensymphony.module.sitemesh.filter.PageFilter的问题,你先把这个过滤器去掉看看你得到的结果对不对呢
beyond667 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 55 楼 的回复:]

你把PageFilter和ClickstreamFilter发出来看看
[/Quote]
那两个filter的class 是com.opensymphony.clickstream.ClickstreamFilter
com.opensymphony.module.sitemesh.filter.PageFilter
VanBaston 2012-04-11
  • 打赏
  • 举报
回复
你把PageFilter和ClickstreamFilter发出来看看
VanBaston 2012-04-11
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 的回复:]
大家看看 是不是拦截器这里出了问题 代码如下: web.xml里
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
</filter>
<filter-mapping>
<filt……
[/Quote]

你这个只能看到你有几个过滤器,但是过滤器里做啥事情不知道啊
qjl1000211038 2012-04-11
  • 打赏
  • 举报
回复
学习。。。不会。。。。
beyond667 2012-04-11
  • 打赏
  • 举报
回复
大家看看 是不是拦截器这里出了问题 代码如下: web.xml里
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>
com.opensymphony.module.sitemesh.filter.PageFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemesh</filter-name>
<url-pattern>*.fb</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.css</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.js</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.fb</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>GetEmployeePicture</servlet-name>
<servlet-class>
com.freeborders.psa.servlet.GetEmployeePicture
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetEmployeePicture</servlet-name>
<url-pattern>/individual/getEmployeePicture</url-pattern>
</servlet-mapping>
<filter>
<filter-name>clickstreamFilter</filter-name>
<filter-class>
com.opensymphony.clickstream.ClickstreamFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>clickstreamFilter</filter-name>
<url-pattern>/*</url-pattern>


大家看看 那个是拦截返回值是json格式的 导致json格式的里面增加html
ylovep 2012-04-10
  • 打赏
  • 举报
回复
第一步 :在后台打印转换后的json的数据,看看数据的格式是否正确
第二部 :查看前台是否引入了正确的js文件
第三步 :编写的js是否正确

据分析楼主第一步应该没有问题。
VanBaston 2012-04-10
  • 打赏
  • 举报
回复
你那个返回的东西不对的,中间肯定有问题!是不是还有其他的处理!
beyond667 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 47 楼 的回复:]

毛都没长全就学人家用jquery ajax 大神来给你解决吧 让你这狗日的安心吃饭饭吧 犹豫你用的是$.ajax方法 异步请求进入服务端 服务端返回后要判断 返回后进入哪个方法 (是success方法或还是fail方法) 所以你才返回的时候 要写个boolean类型的变量 名字可以写成success 就这么写吧 定义:
Map result = new HashMap();
res……
[/Quote]
我按照你说的 把“true”这字符串写进去 然后到success : function(data) {
alert("fffff");
},error: function(res, text,aa) {
alert("错误信息:" + text +aa);
}
出来的信息是 错误信息:parsererrorSyntaxError: JSON.parse: unexpected character
beyond667 2012-04-10
  • 打赏
  • 举报
回复
晕 图片咋没上去 我传相册了啊
beyond667 2012-04-10
  • 打赏
  • 举报
回复
图片如下


VanBaston 2012-04-10
  • 打赏
  • 举报
回复
那找个问题应该是你处理逻辑里报了错了吧!
你配置错误跳转页面了吧,返回的应该是你的错误跳转页面吧,不然text返回的应该是和json一样的字符串的
beyond667 2012-04-10
  • 打赏
  • 举报
回复
怎么发图片啊 我怎么发布上去 这里我发现个问题 要是返回的text 那String数据在那html里 而且在<tr><td>里
beyond667 2012-04-10
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]

你后边写那个return null干啥
[/Quote]
因为是struts1 用ajax来异步获取List这里必须是return null 否则你随意return个 strut就会往配置里找 就可能到其他界面,return null就可以避免, 然后把返回的值写到response里 关键是把json写进去 竟然传不到success方法
VanBaston 2012-04-10
  • 打赏
  • 举报
回复
你把dataType改成text得到的结果是啥,发出来看看,怎么会是个html呢
VanBaston 2012-04-10
  • 打赏
  • 举报
回复
你后边写那个return null干啥
加载更多回复(39)

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧