在视图中呈现 JSON 数据 - 播放框架

Posted

技术标签:

【中文标题】在视图中呈现 JSON 数据 - 播放框架【英文标题】:render JSON data in view - play framework 【发布时间】:2012-09-22 16:27:41 【问题描述】:

我是新手。我正在使用 renderJSON 来生成 JSON 数据。如何在我的视图中访问这些数据。我试过渲染(“视图”,jsonobject)。当我试图在 jquery 脚本中访问这个对象时,这里没有收到任何数据。

我尝试使用 ajax 调用。以下方法在我的控制器中

public static void getJSONWords()
 .......
 render(jsonObject);


public static void wordcloud()
    render();

我的观点“wordcloud.html”制作了一个ajax

       $.ajax(

    url: "/getJSONWords",
    dataType : 'json',
    success: function (data) 
             .......
            );

但我没有为我们的 ajax 调用获取任何数据。我尝试使用 Firfox 调试器,检查日志文件 ajax 调用是否正在调用相应的控制器操作。感谢您的帮助

【问题讨论】:

什么版本的玩!你正在用吗?版本 1.2.x 还是 2.0.x? 通常我将 renderJSon 与 ajax 请求一起使用。在这种情况下,您的数据将位于 $.get 或 $.post 函数的第一个变量(通常称为数据)内 @MarcoCalì 我尝试使用 ajax 调用,但没有得到任何数据。你能看看吗?谢谢。 如果你在 post 或 get 函数中设置断点,你可以检查局部变量数据 @MarcoCalì 尝试使用 Firefox 进行调试,但由于某种原因没有获取数据。 【参考方案1】:

renderJSON直接将JSON返回给浏览器,不被View处理。

如果你想访问你视图中的jsonObject,那么你可以这样做

render(jsonObject);

这会将 json 对象传递给您的视图,并将其作为jsonObject 提供。因此,在您的视图中,您可以执行类似的操作。

<script>
   var data = $jsonObject.raw();
   $(document).ready(function() 
      // process your JSON once the rest of the document is rendered
   );
</script>

请注意,我使用raw() 来防止特殊字符被转义。

UDPATE:在您更新后提供更多信息……您的 AJAX 调用中的路由似乎不正确。它应该看起来像......

   $.ajax(

    url: "@Application.getJSONWords",
    dataType : 'json',
    success: function (data) 
             .......
            );

【讨论】:

如果您正在进行 ajax 调用,那么 renderJSON 是正确的做法。不过,您的路线可能是错误的……请参阅我的更新。 我试过这样 $.ajax( url: "/getJSONWords", dataType : 'json', success: function (data) var testData = data;);在我的控制器中使用 renderJSON(jsonObject) 但我的 ajax 失败了。谢谢。 您的路线文件中有什么?如果没有,那么您的路线不正确。按照我的建议设置路线,看看会发生什么。【参考方案2】:

您是否尝试过在您的视图中使用#jsAction / 标记作为documented here 和here。该标签被设计为透明地从控制器获取方法定义。该文档显示了很多有关其用法的示例,因此我想这将有助于您处理问题。

【讨论】:

以上是关于在视图中呈现 JSON 数据 - 播放框架的主要内容,如果未能解决你的问题,请参考以下文章

如何通过布尔值在播放视图模板中呈现不同的 html 元素?

从公共 API 获取 JSON 以在 SwiftUI 的列表视图中呈现

列表视图 itemclick 事件 appcelerator

在服务端渲染部分视图或在客户端发送 json 数据和渲染模板

如何播放警报声音并呈现自定义视图而不仅仅是通知?

在 Rails 中,如何使用视图呈现 JSON?