0

我是 Grails 新手用户,对 AJAX 完全陌生。我对AJAX的概念没有完全掌握,网上的资料比较零散。

据我了解,在 grails 中,如果我想在我的 HTML 文档的一部分加载时在我的一个控制器中执行一个方法,我可以简单地使用类似的东西

<div onload="${remoteFunction(action:"foo", update:"foo"...)}" ...>
  1. 对假设 foo 的调用的响应是如何返回的,如何在 js 函数中访问它?
  2. 我可以从我假设的 foo 动作创建的类中返回一个对象吗?
4

1 回答 1

4

在 foo 操作返回时,您可以将简单的 html 作为文本或渲染一些可在视图中使用的对象。

这里有关于控制器“渲染”的所有信息

http://grails.org/doc/latest/ref/Controllers/render.html

您可以使用该数据进行更新并在那里使用它。然后,您可以像往常一样使用 javascript 访问该“foo”div 中的 Html 和数据。

例如:

控制器.groovy

// renders text to response
render '<div id="bar" onclick="alert($('bar').val())>some text</div>'

查看.gsp

//Makes the call and updates foo
<div onload="${remoteFunction(action:"foo", update:"foo"...)}" ...>
<div id="foo" name="foo"></div>

输出

<div onload="theAjaxJavascriptFunctionThatGrailsWillInject" ...>
<div id="foo" name="foo">
    <div id="bar" onclick="alert($('bar').val())">some text</div>
</div>

如果您从 Controller.grooy 返回一些对象,那么您必须在 View.gsp 中像这样对待它

//Makes the call and updates foo
<div onload="${remoteFunction(action:"foo", update:"foo"...)}" ...>
<div id="foo" name="foo">
    ${myObject.theValueIWant}
</div>

我添加了一个 javascript 警报,但您可以按照自己喜欢的方式进行操作,有很多方法可以做到。

希望能帮助到你 :)

于 2012-07-19T06:20:41.613 回答