gpt4 book ai didi

java - Play Framework : "Action not found" error for GET route after AJAX call to PUT/POST

转载 作者:行者123 更新时间:2023-12-01 13:36:08 27 4
gpt4 key购买 nike

我正在按照 Play Java Zentask 教程的步骤 5 ( Adding some AJAX actions ) 和 6 ( Invoking actions from Javascript ) 中提供的说明,向我的 Play 应用程序添加一些 AJAX 功能。

我当前的设置是在 <button> 时触发特定操作。点击如下:

路线

PUT     /resources/:name/description controllers.Application.updateDescription(name: String)
...
GET /assets/js/routes controllers.Application.javascriptRoutes()
...

应用程序.java

public class Application extends Controller {

public static Result javascriptRoutes() {
response().setContentType("text/javascript");
return ok(
Routes.javascriptRouter(
"jsRoutes",
controllers.routes.javascript.Application.updateDescription()));
}

...

public static Promise<Result> updateDescription(String name) { ... }

}

main.scala.html

<script src="@routes.Application.javascriptRoutes()" type="text/javascript"></script>
...

app.js

...
button.on("click", function(event) {
event.preventDefault();
resourceName = "foo";
route = jsRoutes.controllers.Application.updateDescription(resourceName);
newDescription = "bar";
$.ajax({
url: route.url,
type: route.type,
data: { "description": newDescription },
success: function(res) {
alert("Success!");
},
error: function(err) {
alert(err);
}
});
});
<小时/>

虽然这有效(每次单击按钮时我都会收到“成功”警报),但在 Firefox 开发人员工具中查看控制台输出时,我注意到在 PUT 之后请求被执行,Play似乎正在执行一个单独的GET请求相同的 URL:控制台显示一行“未找到元素”,当我单击相应的链接时,将打开一个包含常规“未找到操作”页面源的新窗口。此页面(正确地)指出找不到相应的操作“对于请求GET /resources/foo/description”并列出了我当前定义的所有路由。当我从 PUT 更改 HTTP 方法时,此行为仍然存在。至POST .

我的问题是:为什么 Play 会提示我从未触发过的缺失操作?我怎样才能阻止它检查此操作?

最佳答案

您在 Chrome 中得到相同的控制台输出吗?可能是 Firefox 预取 URL。

关于java - Play Framework : "Action not found" error for GET route after AJAX call to PUT/POST,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21257850/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com