在ajax请求之后呈现页面

时间:2014-10-27 15:29:37

标签: java jquery ajax rest playframework

我正在使用HightCharts库在Play Framework下绘制一些图表。我在用户点击图表时设置了ajax请求。请求返回一个带有页面呈现的Result。我想重定向到渲染页面。

这是我的请求的代码段:

plotOptions:{
                        column:{
                            colorByPoint: true
                        },
                        series: {
                            cursor: 'pointer',
                            point: {
                                events: {
                                    click: function (event) {
                                        var jsonMsg = JSON.stringify({category: data.categories[event.point.y], product: data.products[event.point.x]});
                                        $.ajax({
                                            type: 'POST',
                                            url: '@namespace.controllers.modules.routes.MailchimpController.createSegmentByCorrelation()',
                                            data: jsonMsg,
                                            contentType : 'application/json; charset=utf-8',
                                            dataType: 'json'
                                        });
                                    }
                                }
                            }
                        }
                    }

这是我的回复声明:

return ok(template.render(
                            RolesDao.getRole(session().get("role")),
                            session("email"),
                            Template.getList(apikey),
                            segmentId.toString()));

关于我如何做到的任何想法?

1 个答案:

答案 0 :(得分:1)

使用您的ajax操作,您无法返回呈现的页面(事实上是HTML代码),而只是创建指向页面的链接,该页面将呈现为常见Result

注意:如果参数可以包含某些凭据等敏感数据,则值得添加一些工作,即在AJAX操作中使用一些唯一ID和随机安全令牌保存DB或Cache中的参数集,并返回带有此ID的重定向URL和安全令牌,稍后您将能够使用给定的ID检索这些凭据并在目标操作中呈现视图。安全令牌是为了防止抓取工具进行未经授权的访问。

事实上,使用内置缓存API,您可以将Result放在缓存中,因此它可以是非常快速的解决方案。