0

gsp にテーブルがあり、各行には編集するボタンがあります。このボタンは、この行を編集するためのフォームを含むモーダル パネルを開きます。このモーダルを開くと、js 関数が実行され、コントローラーのアクションへの ajax 呼び出しが行われ、行の ID が渡されます。コントローラーでエンティティを検索し、それをビューに返します。しかし、問題は、ビューでこのオブジェクトが見えないことです..

私が持っているコードは次のとおりです。

GSP :

<a href="#modal-form" data-id="${cancha?.id}" role="button" class="open-EditCanchaModal btn btn-xs btn-info" data-toggle="modal" /> 

次に、このモーダルには ag:formRemote があり、プロパティを編集するために内部に 4 つの textFields があります

JS :

$(document).on("click", ".open-EditCanchaModal", function () {
    var canchaId = $(this).data('id');
    var newData = $.post("${createLink(controller: 'cancha', action: 'selectToEdit')}/"+canchaId);
    alert("dat: "+newData); // it print dat: [object Object]
    alert("can: "+newData.cancha); // it print undefined
});

グレイル

def selectToEdit = {
    Cancha cancha = Cancha.get(params.id)
    println cancha // this found the correct "Cancha"
    [cancha:cancha]
}

そのため、メソッド selectToEdit を呼び出した後、JS で Cancha を取得して、モーダル パネルの textFields に属性をレンダリングしたいと考えています。

4

2 に答える 2

0

ajaxでGrail Jqueryモーダルウィンドウとフォーム投稿を作成しますか?

いくつかの抜粋:

"Attach Comment": function() {
        //do form posting here
        $.ajax({ 
        context: $(this),
        url:"${resource()}"+"/issue/attachComment",
        type:"POST",
        data:{"comment":$('#commentArea').val(),"id":$("#selectedIssueInstanceId").val()},
        success:function(data){
        if(data.success)
        {
        var tobeAppendeID = $("#selectedIssueInstanceId").val();
        $('#'+'comment_'+tobeAppendeID).val(data.newComment);
        $( this ).dialog( "close" );
        }
        else
        {
        $('#error-message').addClass('ui-state-error ui-corner-all');
        $("#error-message").html(data.message).show()
        $(this).dialog("close");
        }
        $( this ).dialog( "close" );
        }
于 2013-10-31T09:27:43.280 に答える
0

私はGrailsも初めてです。私が間違っている場合は修正してください。

返される newData は、オブジェクトの文字列形式になります。(実際のオブジェクトではありません。 toString() の出力と考えてください)

だから、あなたがやろうとしていることを達成するために。JS/GRAILS 間のブリッジとして JSON エンコード/デコードを使用できます。

于 2013-10-30T23:49:19.010 に答える