如何通过ajax接收模型

时间:2014-08-10 05:29:02

标签: jquery ajax grails groovy

所有

我有两个问题,一个主要的一个未成年人。我的小问题是为什么这个简单的grails应用程序不起作用?

人员区域

package ajax

class Person {
    String firstname
    String lastname
    int age


    static constraints = {
    }
}

的HomeController

package ajax
class HomeController {

    def index() {
    render (view: "index")
    }
    def greet()
    {
        render "hi"
    }
    def getPersons()
    {
        def persons = Person.getAll()
        render(model: [persons:persons])
    }
}

index.gsp中

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
    <title></title>
    <g:javascript plugin="jquery" />
</head>

<body>
<div id="greeting"></div><br>
<button onclick='<g:remoteFunction action="greet" update="greeting"/>'>Click on me!</button>
</body>
</html>

最后我的主要问题是,在index.gsp中,如果我想将按钮操作更改为getPersons,那么我将如何通过ajax或jquery获取数据,例如g:remoteFunction。如果我确实获得了数据,我将如何格式化#greeting中的数据,以便获得firstnamelastname

1 个答案:

答案 0 :(得分:1)

以下解决方案应该有效:

<强> PersonController

package ajax
class PersonController {
  def index() {
    render Person.list(params) as JSON
  }
}

这是您的JSON后端。在前端,您可以使用普通的旧jquery来执行ajax调用:

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title></title>
<g:javascript plugin="jquery" />
</head>

<body>
<div id="persons"></div><br>
<button id='fetch-persons'>Fetch Persons</button>
<g:javascript>
$(document).ready(function(){
    $('#fetch-persons').click(function(){
        $.getJSON('/person/index.json', function(data) {
            $('#persons').html(JSON.stringify(data));
        });
    });
});
</g:javascript>
</body>
</html>