使用javascript调用Action

时间:2013-06-05 12:39:25

标签: javascript html5 playframework

PLAY Framework相当新,并且由于我的工作限制,我们使用1.2.5版本,而现在直到使用从HTML到Controller的常规流程通过表单提交来完成我的所有流程。我想从JavaScript函数调用Application.Action。

虽然我有一个输入信息的表单,但可以点击另一个非提交按钮进入单独的页面以获取额外信息。我想通过“onClick”调用JavaScript函数,并在JavaScript函数内部调用“@Application.Action(some param ...)”。

我需要在调用操作之前获取特定输入字段中的内容。

我尝试用PLAY“弹出窗口”来做到这一点,但这似乎不起作用,因为我无法传递参数。

所以这是我的代码片段:

在HTML文件中(扩展main.html,其中包含所有javascript文件“include”)

 <form>....
        some input fields here
        submit button here
    </form>

<button onclick="myFunction()" data-role="button" style="width: 5em">Click here</button>

在main.html中包含的JavaScript文件中我有类似的内容

function myFunction() {
    var inputField1 = document.getElementById('inputField1').value;
    var inputField2 = document.getElementById('inputField2').value;
    var inputField3 = document.getElementById('inputField3').value;
    window.location = "@{Application.moreInfo(inputField1, inputField2, inputField3)}";
}

当然不起作用

有没有办法像这样做?

我是否必须为此创建路线?

我可以通过替换

来到达单独的页面
window.location = "@{Application.moreInfo(inputField1, inputField2, inputField3)}";

 window.location.href='/goThere'; 

只要我有路线

 /goThere   Application.goThere

但是我无法找到传递参数的方法,我试图像

那样设置路线
/goThere/{inputField1}{inputField2}{inputField3}    Application.goThere(inputField1...)

但我想我也没有正确的语法。

有没有办法调用Application.Action并从JavaScript函数传递参数/字段。

感谢任何帮助

1 个答案:

答案 0 :(得分:0)

内置的#{jsAction /}模板标记完全符合您的要求。

示例:

假设您有路线

GET     /moreinfo/{foo}/{bar}        Application.moreInfo

您可以使用jsAction的结果来获取包含所需参数的正确网址:

var fieldOne = "I'm a Javascript variable";
var fieldTwo = "Really? Me too";
var moreInfoAction = #{jsAction @Application.moreInfo(":foo", ":bar") /};

// and since it looks like you want to set the current location
// to your freshly obtained URL:
window.location.href = moreInfoAction({"foo": fieldOne, "bar": fieldTwo});