0

次のような AJAX リクエストがあります。

jsonData = JSON.stringify({stuff: stuff});
        $.ajax({
            url: '<%=Url.Action("myMethod", "myController") %>',
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: jsonData,
            success: function (data) {
            $("#myDiv").append('<span><%=Html.ActionLink("Details", "myMethod", new {id      = data.id })%></span>');
         }
)};

編集!この Actionlink を「成功」の div に追加しようとしています。最初の投稿で、どういうわけか $("#myDiv").append() コードを忘れてしまいました。

このnew {id = data.id }セクションでは、このアクションリンクで data.id (JavaScript 変数) を使用したいと思います。

データが定義されていないか、リテラルの文字が多すぎるなどのエラーが発生し続けます。

以前にこれを成功させた人はいますか?

4

3 に答える 3

2
'<span><a href="<%=Url.Action("Details", "myMethod")%>?id=' + data.id + '"></a></span>'
于 2012-11-10T18:47:03.937 に答える
2

サーバー側 (<%) のタグとクライアント側の実行コンテキストを混同していると思います。"data"はクライアント側で定義された変数であり、それらのサーバー側タグの間のすべてがサーバー上で処理されます。"data"ページに!という名前の変数はありません。サーバーで使用したいので、サーバー側 (<% %>) タグの間にあります。

クライアントでは、スクリプトは次のコードのようになります。

jsonData = JSON.stringify({stuff: stuff});
        $.ajax({
            url: 'THE_PROCESSED_RESULT_OF_SERVER_TAG_GOES_HERE',
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: jsonData,
            success: function (data) {
    '<span>THE_PROCESSED_RESULT_OF_SERVER_TAG_GOES_HERE</span>'
         }
)};

開発者ツール (またはその他のもの) を使用してファイルの内容を確認すると、クライアントで実際に何が起こっているかがわかります。

アップデート

また!すでに述べたようなことはできません。サーバー側のコードとクライアント側のコードには違いがあります。という名前の変数にどのようにアクセスしたいかは関係ありません"data"。サーバー側のコードでは定義されていません。クライアント側の実行コンテキストで実行される成功関数のパラメータです。

乾杯に役立つことを願っています

于 2012-11-10T17:31:17.263 に答える
1

コードの一部(一部)はサーバーで実行され(そのUrl.Action部分data.id、コードがクライアントブラウザーに到達した場合にのみ使用できるため、直接実行することはできません。

idただし、 fromサーバーにダミーの一意の値を設定し、それをjavascriptに置き換えるなどのトリックを行うことができます。

$("#myDiv")
   .append('<span><%=Html.ActionLink("Details", "myMethod", new {id = "-dummy-"})%></span>'.replace('-dummy-',data.id));
于 2012-11-11T11:34:11.670 に答える