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

gsp はサーバー側で処理され、javascript はクライアント側で処理されるため、gsp がすべての html ドキュメントをレンダリングしてモデルにデータを入力した後、javascript/jquery コードを gsp に入力することはできません。ページが既に処理されていることに注意する必要があるため、${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 に答える
1

ajax 呼び出しを難しい方法で記述する必要はありません。HTML 内で使用できる Grails のインターン タグがいくつかあります。

リンクをたどると、いくつかの良い例が見つかります...

于 2012-07-05T18:35:36.183 に答える