Play Framework发送数组/列表以供客户端代码处理

时间:2013-06-28 03:12:06

标签: scala playframework-2.1

我在我的网站上使用Scala Play Framework 2.1。我希望能够在加载页面后将数组或列表传递给客户端代码以进行后续处理。该列表基本上是后来从服务器请求的一堆东西。我的目的是让网页显示数据。

模板中的以下代码有效,但感觉很糟糕。有更好的方法吗?

<script>
    var items = [ @results.map{ res =>
        "@res.item",
    } ""]
</script>

这是我最终想要在客户端做的事情:

for (var i = 0; i < items.length; i++)
{
  var item = items[i]

  jQuery.ajaxQueue({
    url: "/dataJson",
    data: {item : item}
  }).done(function( data ) {
    addColumn(data)
  });

}

2 个答案:

答案 0 :(得分:2)

假设results.map(_.item)是字符串列表:

@import play.api.libs.json._

<script>
    var items = @Html(Json.toJson(results.map(_.item)).toString);
</script>

//result: var items = ["a","b","c"];

答案 1 :(得分:1)

我使用了类似的东西:

<script>
  var items = new Array();
  @for((result: String, index) <- results.zipWithIndex) {
    items[@index] = "@result";
  }
</script>

但我同意这有点笨拙,特别是当你需要逃避特殊的角色时......

// Multiline js escape can be done this way:
.replaceAll("\n", "\\\\\n")