有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

javascript JQuery函数不返回JSON列表播放框架,JPA

我是一个真正的新手,正在尝试在介绍Youtube视频(https://www.youtube.com/watch?v=bLrmnjPQsZc)中进行练习

我正在做一些不同的事情。1) 我正在使用一个更新版本的Play(2.5左右)。我还在持久层中使用JPA而不是eBean,使用本地Postgres数据库而不是h2内存数据库。不过,这不应该影响我的问题

基本上,我添加了一个“/persons”GET端点,它以JSON格式返回Person表中的人员。我已经确认了这一点,并返回了有效的JSON

然而,我的JQuery似乎还没有达到这个目标。根据教程,我已经用Coffeescript编写了我的查询,现在正在检查它编译到的Javascript

以下是咖啡脚本:

$ ->
  $.get "/persons", (persons) ->
    $.each persons, (index, person) ->
      $('#persons').append $("<li>").text person.name

以下是已翻译的javascript(如预期的那样位于http://localhost:8080/assets/js/index.js):

(function() {
  $(function() {
    return $.get("/persons", function(persons) {
      return $.each(persons, function(index, person) {
        return $('#persons').append($("<li>").text(person.name);
      });
    });
  });

}).call(this);

//# sourceMappingURL=index.js.map

这是我的模板:

@(message: String)

@main("Welcome to Play") {

    <script type='type/javascript' src='@routes.Assets.versioned("js/index.js")'></script>

    <ul id="persons"></ul>

    <form action="@routes.HomeController.addPerson()" method="post">
    <input type="text" name="name" />
    <button>Add Person</button>
    </form>

}

“添加人员”正在工作。当我在浏览器中手动执行http://localhost:8080/persons时,我能够持久化人员并查看他们

显然,我的javascript技能没有那么强,因此,如果能帮助我解决可能出现的问题,或者我如何进一步解决li没有被填充的问题,我将不胜感激


共 (2) 个答案

  1. # 1 楼答案

    看起来结尾缺少了一个闭括号

    (function() {
      $(function() {
        return $.get("/persons", function(persons) {
          return $.each(persons, function(index, person) {
            return $('#persons').append($("<li>").text(person.name)); //here
          });
        });
      });
    }).call(this);
    

    https://jsfiddle.net/8va4k4wu/2/

  2. # 2 楼答案

    我终于明白了。在插入一些控制台之后。在我的javascript中记录行,并意识到函数实际上没有被命中,我意识到我的模板脚本标记中有一个输入错误:

    <script type='type/javascript' src='@routes.Assets.versioned("js/index.js")'></script>
    

    脚本类型应为“text/javascript”,而不是“type/javascript”

    将此导联修改为控制台输出的“ReferenceError:$is not defined”,这很快让我想到了这个问题,建议的解决方案对我很有效:

    Uncaught ReferenceError: $ is not defined (using play framework)