2

ネットとここでもstackoverflowを検索しましたが、これに関するヒントは見つかりませんでした...

Grails 2.1.1 プロジェクトがあり、Ajax リクエストを使用して jQuery からコントローラー関数を呼び出したいと考えています。これまでのところ、私はこれを思いつきます:

$.ajax({
    type: 'POST',
    url: "${createLink(controller:'userSearch',action:'ajaxFindUser')}",
    dataType: 'json',
    data: {
        lastname: $('#searchLastName').val(),
        firstname: $('#searchFirstName').val(),
        zipcode: $('#searchZipCode').val(),
        city: $('#searchCity').val()
    },
    success: function(data) {
        $('#searchSubContainerBody').html(data);

        $('#searchTable tr').draggable({
           cursor: 'move',
           helper: 'clone',
           scope: 'drag-guests',
            start: function(event, ui) {
              searchCloneTableRow.tr = this;
                searchCloneTableRow.helper = ui.helper;
                searchCloneTableRow.cells = new Array();
                $.each(this.cells, function(index, column) {
                    searchCloneTableRow.cells.push(column.innerText);
                });
            },
            connectWith: '#searchDetailContainerDropArea'
        });

        $('searchTable').dataTable({
            'bJQueryUI':true
        });

    },
    error: function(request, status, error) {
        $(errorDialog).html(error);
        $(errorDialog).dialog('open');
        return false;
    },
    complete: function() {
        //do something
    }
});

ボタンをクリックして Ajax リクエストを発行すると、DevTools に次のエラーが表示されます。

POST > http://localhost:8080/GrailsTest001/authentication/$%7Bg.createLink(controller:'userSearch',action:'ajaxFindUser')%7D 404 (Not Found) 

ご覧のとおり、URL は HTML でエンコードされています... どうすれば Grails がエンコードしないようにできますか?

Config.groovyコーデックでは次のように設定されていますnone

// The default codec used to encode data with ${}
grails.views.default.codec = "none" // none, html, base64

ここで何が間違っていますか?これについてのヒント(またはより良い:解決策)を教えていただけますか?どんな助けでも大歓迎です!

4

1 に答える 1

4

GSP スニペット

 ${createLink(controller:'userSearch',action:'ajaxFindUser')}

解釈されていません - これは JavaScript ファイルにありますか、それとも実際の G​​SP にありますか? JavaScriptファイルで定義されているようです。その場合は機能しません。GSP ページで JavaScript 変数を作成し、ajax 呼び出しからその JavaScript 変数を参照する必要があります。例えば:

GSP コードで:

<g:javascript>
  var ajaxAction = "${createLink(controller:'userSearch',action:'ajaxFindUser')}"
</g:javascript>

ajax コードを含む JavaScript ファイルで:

$.ajax({
    type: 'POST',
    url: ajaxAction,
    dataType: 'json',
    data: {
  ...
于 2012-11-06T12:47:23.360 に答える