2014-09-24 50 views
-1

好了,现在的问题是...

存着我所有的谷歌数据存储“拯救训练”为文本对象。 当我查看我保存的锻炼时,服务器会将大量JSON对象中的所有保存的锻炼返回。我解析这些并在​​我的JSP页面上按名称显示它们。

所有工作正常。

现在,如果我想再次使用保存的锻炼,我只需从数组中拉出锻炼JSON,然后使用jQuery $ ajax调用一个servlet(转发到“showWorkout.jsp”)再次显示锻炼使用传入的JSON)。

问题似乎是$ ajax调用需要回调。它是否正确?

正如你所看到的,我试图从我传递JSON的servlet转发到“showWorkout.jsp”。回调似乎阻止了这一点。 “showWorkout.jsp”从不显示,当前页面不会更改。

我可以使用回调调用“showWorkout.jsp”并包含JSON以显示锻炼吗?我宁愿不将整个JSON作为URL中的查询参数。

OR ...我可以禁用回调并允许servlet转发到JSP吗?

谢谢!

+0

如果目标是在浏览器中加载全新页面,则不应使用AJAK。您应该简单地发布JSON设置为隐藏字段值的表单。如果目标是用servlet返回的HTML片段替换页面的一部分,那么您需要发送一个AJAX请求,并使用回调函数将接收到的HTML注入当前页面的一个元素中。 – 2014-09-24 22:05:49

回答

1

你正在使用jquery,对不对?所以回调只不过是你在success : function(data) {...}中定义的函数。担心回调的问题意味着你正在做旧式学习,而不是真正使用jQuery。

如果您尝试转发回执行ajax调用的jsp,则根本不会获得ajax。这将刷新页面,如果它的工作,而不是刷新页面是整个Ajax点。你要做的就是把Ajax调用像一个异步函数调用,并做一些与响应回调时被触发:

例如,打印在消息框中的响应:

success : function(data) { alert(data); } 

或者,把应答到一个div:

success : function(data) { document.getElemenyById('my_div').innerHTML = data; } 

如果你真的想拥有这个servlet着不同的页面,或回到同一页面,使用常规的HTML表单提交。

+0

所以基本上如果我想转发到另一个JSP(例如showWorkout.jsp),我不能使用jQuery的$ .ajax调用,因为回调将我带回到同一页面(我不想)。 每个保存的锻炼名称都显示在HTML无序列表中,所以这意味着我必须在每个项目周围放置一个Form标记。或者用jQuery动态创建表单。 我认为最简单的做法是使用“location.href”并将workoutID传递给servlet,在数据库中查找它并将其转发给显示JSP。这使我不得不第二次查看锻炼的JSON,但这不是什么大问题。 – edcincy 2014-09-24 22:58:01