4

データを編集できるように、コントローラーからのパラメーターを JavaScript スクリプトに渡そうとしています。しかし、JavaScript は私のパラメーターを受け入れません。

コードは次のとおりです。

@for(status <- lista){
<tr>
<td>@status.getDescricao()</td>
<td><a href="javascript:;" onclick="enviar('formAltStatus/@status.getCodStatus()')"><img src="@routes.Assets.at("img/edit.png")" alt="" title="Editar"/></a>
                    <a href="@routes.StatusController.removerStatus(status.getCodStatus())"><img src="@routes.Assets.at("img/erase.png")" alt="" title="Remover"/></a>
</td>
</tr>
            }

@status.getCodStatus() は私の ID です。

ルート:

GET     /formAltStatus/:id              controllers.StatusController.formAltStatus(id:Long)

ジャバスクリプト:

function enviar(a){
    $.ajax({
        url: "/"+a,
        type: "GET",
        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
        dataType: "html",
        async:true,
        success: function(html){        
            $("#nova").html("");
            $("#nova").html(html);
            $("#logo").show();
        }
    });
}

これを行う別の方法はありますか?

4

2 に答える 2

3

HTML5 のデータ属性は、サーバー側のデータをクライアント側の関数に渡さなければならない状況向けに設計されています。ベスト プラクティスの解決策は、データ属性をアンカー タグに追加し、Javascript で属性値を取得することだと思います。

<a ... data-status="@status.getCodStatus" data-param2="@param2">

このコードは、Javascript がどのように見えるかを示しています。私は Javascript の専門知識があまりないので、JQuery を使用するソリューションを作成しました。JQuery を使用しておらず、純粋な Javascript のみを使用している場合は、私の提案を変更する必要があります。

HTML:

<!-- Simple illustration of how to pass server-side data to a JS function -->
<a href="no-javascript.html" class="edit-link" data-status="@status.getCodStatus" data-param2="@param2">
    Hyperlink body goes here
</a>

Javascript:

$('.edit-link').click(function(e) {
   e.preventDefault();
   statusCode = $(this).data('status', 'param2');
   alert(statusCode);
 });

jsFiddle のライブ例

于 2013-05-16T15:15:12.480 に答える