0

我是 ajax 新手,所以也许这很明显。我尝试了许多不同的不起作用的方法。我有javascript,当您单击按钮时:

  1. 从控制器获取一些数据的 ajax 调用 - 返回一个对象
  2. 在我将在页面上显示的模板中显示该数据

这是javascript/ajax:

<script type="text/javascript">
  $("#show").click(function () {
    $.ajax({  url: '/Myproject/result/index',
              type: "POST",
              data: { id: id},

          success: function(result) {
             alert("Success:" + result);  // Can see getting object back.
          }});
    $(".resulttable").show();
  });

这是 grails 视图模板中的关键行:

<g:each in="${allResults}" status="i" var="result">
  1. 如何从 javascript 获取数据到 gsp 代码(即 allResults)?
  2. 我是否必须“刷新”此模板才能显示新数据?

谢谢。

4

2 回答 2

1

你不需要编写你的 ajax 调用。您可以在 html 中使用一些 Grails 实习生标签:

按照链接,你会发现一些很好的例子......

于 2012-07-05T18:35:36.183 回答
1

你不能让你的 javascript/jquery 代码填充 gsp 中的东西,因为 gsp 是在服务器端处理的,而 javascript 是在客户端处理的,在 gsp 呈现所有 html 文档并用你的模型填充它们之后。你需要知道你的页面已经被处理过了,所以像 ${variables} 这样的东西不会被重新加载。所以当你这样做时:

$(".resulttable").show();

它不会显示您正在等待的结果。您必须使用 javascript 代码重新加载结果表。

因此,如果您在这里使用 ajax,您应该使用该函数success通过 javascript/jquery 更改您的 html 表,因为您已经有了您想要的响应。也许这篇文章可以帮助你。哦,我认为如果在您的 ajax 调用中定义一个 dataType 会更好(json 在您的情况下效果很好),如下所示:

$("#show").click(function () {
    $.ajax({  url: '/Myproject/result/index',
              type: "POST",
              data: { id: id},
              dataType: 'json',
              success: function(result) {
                  alert("Success:" + result);  // Can see getting object back.
              }});
    $(".resulttable").show();
  });

只是为了弄清楚您从控制器那里得到了什么样的响应。

于 2012-07-05T19:08:23.023 回答