Grails:将javascript变量传递给模板

时间:2012-07-05 18:31:00

标签: ajax grails gsp

我是ajax的新手所以也许这很明显。我尝试过很多不同的工作方法。当你点击一个按钮时我有javascript:

  1. 从控制器获取一些数据的ajax调用 - 返回一个对象
  2. 在我将在页面上显示的模板中显示该数据
  3. 这是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. 我是否必须“刷新”此模板才能显示新数据?
    3. 感谢。

2 个答案:

答案 0 :(得分:1)

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

点击链接后,您会找到一些不错的例子......

答案 1 :(得分:1)

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

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

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

因此,如果您在此处使用ajax,则应使用函数success通过javascript / jquery更改html表,因为您已经拥有了所需的响应。也许this阅读可以帮到你。哦,我认为如果在你的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();
  });

只是要明确你从控制器那里得到了什么样的回应。