【问题标题】:Putting javascript variable into play function将javascript变量放入播放功能
【发布时间】:2012-09-12 04:15:02
【问题描述】:

对于我的公开文件,我通常使用:

@routes.Assets.at("data/table.txt")

在普通的 html 中

但是,我有一个带有变量链接的 javascript

var file = "table.txt"//This changes depending on the code
var link = "data/"+ file;

并且想运行一些像这样的jquery函数

$('#mydiv').CSVToTable(@routes.Assets.at(link))

但这不起作用。 我的问题

  1. 为什么玩游戏使用@routes.Assets.at?它在某种程度上更安全​​吗?它似乎只是在传递给它的任何东西前面加上“资产”。仅使用文本“/assets/data/table.txt”是否有缺点
  2. 如何将 javascript 变量传递到 @routes.Assets.at

提前致谢!

【问题讨论】:

    标签: javascript playframework playframework-2.0


    【解决方案1】:
    1. 它更...舒适(谁来过?:))只是当您使用资产的路线时,您可以切换即。 CDN 之间的速度要快得多。如果您将硬编码的 URL 放置在任何地方,则需要在更改应用位置时修复所有这些 URL。
    2. 普通 JavaScript 也有一些可能性,例如,您可以将 write 路由的值传递给 JS 的 someSpecificRoute = '@routes.Assets.at(link)';,然后在您的脚本中使用它

      $('#mydiv').CSVToTable(someSpecificRoute);
      

      也许您也可以使用javascriptRoutes,但您需要自己决定。一般来说,当您计划使用它们不止一次或两次时,使用它是个好主意。

    3. 最后,您可以使用硬编码路径和常见的 JavaScript 技术来发送额外的参数。在这种情况下,我只能建议,出于安全原因,最好验证传递的参数是否符合允许的类型和/或范围。

    【讨论】:

    • 感谢您的回复。我试过: var link = "@routes.Assets.at(data/"+dirName+"/"+fileName+")";和 $('#mydiv').CSVToTable(link);但它失败了......它没有处理scala代码,而只是把所有东西都放在@符号上......我做错了什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 2014-08-21
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    相关资源
    最近更新 更多