如何使用 jquery 中的 ajax 参数调用 playframework api 而无需重新加载页面?

How to call playframework api with parameters using ajax from jquery without reloading the page?

我想在我的 Web 应用程序中加载一个元素,而无需使用播放框架重新加载整个页面,jquery 和 ajax。我无法使用来自 jquery 的参数调用 API。 在不使用 jquery、ajax 和播放框架重新加载整个页面的情况下,应该进行哪些更改或应该编写哪些附加代码来调用带有参数的 API?

以前我在 javascript 上遇到过同样的问题,但我已经解决了。同样的事情我也尝试过申请但是没有成功。

<script>
$(document).ready(function(){
  $("#button").click(function(){
        $.ajax({url: "@routes.UserController.getUserKeySearch(keySearchForm.get().keySearchText)", success: function(result){
        console.log(result);
    }});
  });
});
</script>


@inputText(keySearchForm("keySearchText"),'_label -> "")
<input type = "button" value = "Click Me" id = "button">

我收到上述代码的 NoSuchElementException:

[CompletionException: java.util.NoSuchElementException: 没有值]

问题是服务器端的代码是 运行:

url: "@routes.UserController.getUserKeySearch(keySearchForm.get().keySearchText)"

因此您需要重新加载页面以获得 @routes.UserController.getUserKeySearch(keySearchForm.get().keySearchText)

的正确值

解决方案是使用 Javascript 路由器,查看我对您上一个问题的回答:

因此,您将拥有类似

的代码
$("#button").click(function(){
  var searchKey = $('#keySearchText').val(); // Selector could be different. 
  var searchUrl = sRoutes.controllers.UserController.getUserKeySearch(searchKey).url;
  $.ajax({url: searchUrl, success: function(result){
    console.log(result);
  }});
});