0

我正在使用 Play 2.0 框架。我正在尝试每 500 毫秒使用 jQuery 更新模板页面中的一个分区,但它不起作用。我已经看过这里:http ://www.objectify.be/wordpress/?p=428 。我很确定我准确地遵循了所有说明。

这是我的模板的棘手部分:

<body onLoad="testFin()">
<div id="date_fermeture"></div>
<script src="@routes.Assets.at("/javascripts/jquery-1.10.2.min.js")"></script>
<script>
function termine(){
    $('#date_fermeture').load('/eleve/infoheure/@serie.id');
}
function testFin(){
    setInterval("termine();",500);
}
</script>
</body>

这是我的java代码:

public static Result infoHeure(Long serie_id){
 Serie serie = Serie.find.ref(serie_id);
 return ok(infoHeure.render(serie.date_fermeture));
}

这是路线:

 POST   /eleve/infoheure/:serie_id  controllers.Application.infoHeure(serie_id: Long)

这是模板 infoHeure.scala.html :

@(date_fermeture : Date){
<div id="date_fermeture">
@if(date_fermeture!=null){
   @date_fermeture.getTime()
}else{
   Not finished. The date is not yet determined.
}
</div>
}

我很确定“testFin”函数可以工作,并且每 500 毫秒调用一次“termine”函数。我的“系列”课程包含各种内容,其中包括我想要访问的日期。代码编译没有问题,但页面没有显示应有的日期。

Firefox 的浏览器控制台没有给出任何错误。

谢谢您的帮助。

4

1 回答 1

1

你的路由是用一个POST方法定义的,jQuery默认load()执行一个GET请求(如果你不提供 POST 数据作为第二个参数)。

您可以尝试/eleve/infoheure/...在浏览器中直接调用 URL,它会执行GET请求,您将返回 404 错误,因为 Play 找不到匹配的路由。

您有两个解决方案:更改路由以使用 aGET而不是 aPOST或修改您的 javascript 调用以使 jQuery 执行POST.

在您的情况下,假设您的infoHeure()操作不会对您的数据进行任何修改,最好更改您的路线以使用GET方法。

于 2013-07-11T15:03:07.260 回答