2012-07-05 94 views
0

我对ajax很陌生,所以也许这很明显。我尝试了许多不同的不工作方法。我的JavaScript,当你点击一个按钮:Grails:将一个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. 我必须“刷新”此模板才能显示新数据吗?

谢谢。

+1

昨天你几乎问了同样的问题(11320173)。你看过我给过的答案了吗?有一个非常简单的方法来做到这一点。 – Kelly 2012-07-05 19:45:05

+0

我试过了你提到的“简单”方式,没有运气,所以试过这种方式。所以,回去后,尝试了一天之后的简单方式,无处不在,它的工作!是啊!感谢温和的提醒。有时候你会犯这样一个问题,你犯了一些愚蠢的错误。 – rtfminc 2012-07-05 20:05:45

回答

1

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

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

这不是要告诉你等待的结果。你必须使用JavaScript代码来重新加载你的结果表。

所以如果你在这里使用ajax,你应该使用函数success通过javascript/jquery来改变你的html表格,因为你已经有了你想要的回应。也许this阅读可以帮助你。哦,我认为这将是更好,如果你的Ajax调用,您将定义数据类型(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(); 
    }); 

只是为了让你在做什么回应的那种清晰从控制器获取。

+0

谢谢,有一种了解服务器端/客户端处理,但没有给它很多想法。谢谢。 – rtfminc 2012-07-05 20:07:05

1

你不需要用艰难的方式编写你的ajax调用。有一些实习生的Grails标签,你可以用你的HTML中:

下面的链接,你会发现一些很好的例子......

+0

我试过这些(没有运气),这就是为什么我尝试这种更难的方式。愚蠢的我回到了这个方法,而且很好。 (http://stackoverflow.com/questions/11320173/grails-using-javascript-to-display-results-in-same-view) – rtfminc 2012-07-05 20:09:09