在play框架中从javascript调用java函数

时间:2012-05-16 02:00:01

标签: javascript jquery json playframework

我正在使用play框架做一个项目。

然后点击一些链接,例如“show” 正在调用car.show(55)并在car.show中正在执行一些数据库查询。然后 列表操作正在进行中。

我要做的是,从java脚本文件中调用removegivencar函数。

我的意思是,

当所有汽车都列在html文件中时。我将使用该车的id调用js函数。

例如:删除我的车

我想在js中调用car.removegivencar函数而不是html

因为我有汽车的身份证。我应该做 @ {car.removMyOwremovegivencar(mycar.id)}操作......

我试过

function removeMyCar(id)
{
window.location="@{car.removMyOwremovegivencar(id)}";
}

或window.location =“@ {car.removMyOwremovegivencar(”+ id +“)”

等。但不能这样做:((( 请在这个问题上开车送我......

3 个答案:

答案 0 :(得分:7)

如果写得正确则应该有效。但实际上它是从数据库中删除实体的一个坏例子。那是因为您尝试使用的GET请求。使用GET进行删除不仅合乎逻辑,而且在某些情况下也可能对您的应用程序造成危险。但是,如果您以这种方式使用它,请检查以下内容:

您的路线文件应包含类似的内容:

GET    /car/remove/{id}         car.removMyOwremovegivencar()

还要确保将id param传递给您尝试调用js代码的视图。我没有看到任何其他原因导致此代码无效。

但请考虑更好的方法:

将此操作POST或DELETE并对其进行AJAX调用:

路线:

DELETE   /car/{id}         car.removMyOwremovegivencar()

和你的JS(使用jQuery):

function removeMyCar(id)
{
   $.ajax({
    type: "DELETE",
    url: "@{car.removMyOwremovegivencar()}",
    data: {
      id:id
    }
   });
}

答案 1 :(得分:2)

简短的回答是你不能直接从javascript调用java方法/函数。但是,您可以向将调用您的函数的服务器端资源发出ajax请求。 ajax请求的结果将是您选择的任何格式的函数结果。

答案 2 :(得分:1)

这篇文章可以帮助您:javaScriptRouter

在此示例中,您可以使用此代码

获取网址

var url = jsRoutes.controllers.Application.plus(num1,num2).url;