0

私はこのajaxコードを持っています:

$.ajax({
       type: "POST",
       url: "${createLink(controller:'MyController', action:'downloadFile') } target=\"_blank\" ",
       data: {'names':JSON.stringify(names)},
       dataType: 'json'
});

これは、このコントローラーメソッドを呼び出します。

def downloadFile =
{
    List<JSON> Mynames = JSON.parse(params.names)
    Mynames.each{println "MY ID is: $it"}

    [Mynames:Mynames]
}

MY ID Is Linesを出力しますが、downloadFileビューはレンダリングされません。これは次のとおりです。

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
   <head>
    <title></title>
   </head>
   <body>
    test
   </body>
</html>

ただし、それはレンダリングされていません。どうすればこれを修正できますか?ありがとう。

4

1 に答える 1

1

少し時間を取って、Ajaxとその使用目的、およびAjaxの動作について読んでください。あなたには根本的な誤解があります。

$.ajax({
       type: "POST",
       url: "${createLink(controller:'MyController', action:'downloadFile') } target=\"_blank\" ",
       data: {'names':JSON.stringify(names)},
       dataType: 'json'
});

上記のコードは、コントローラーにリクエストを送信します。ここが重要なポイントです。ページを更新したり、ページにデータを配置したりすることはありません。JavaScriptでのみデータを返します。

あなたのコントローラーは、$。ajax()関数dataTypeパラメーターに基づいて正しい応答を返していません。このdataTypeプロパティは、$。ajax()関数に、応答としてどのような種類のデータを期待するかを指示します。

jQuery $ .ajax()docco

ajaxリクエストへの応答としてHTMLをレンダリングする必要がある場合、最も簡単な方法は$ .load()関数を使用することです。

他にもいくつかの方法がありますが、簡単にするために、ここでは説明しません。真剣に、失礼なことをしようとはしていませんが、私はあなたの他の質問のいくつかを読みました。使用しているツールをよりよく理解する必要があります。

于 2013-01-23T02:23:56.307 に答える