1

私はそのように Url.Action に値を渡そうとしています

     $('._select_change').change(function(n)
     {
         var param = n.target.value;

         $.get('@Url.Action("List", new { someid = param } )', function (data) {
             $('#changeArea').replaceWith(data);
         });

     });

someid = '123' に設定すると、値は問題なく引き継がれます。ただし、someid = param に置き換えると、「CS0103: The name 'param' does not exist in the current context」というコンパイラ エラーが発生します ...

このメソッド呼び出しをどのように構成すればよいですか?

ありがとう

4

2 に答える 2

1

このメソッド呼び出しをどのように構成すればよいですか?

このような:

$('._select_change').change(function() {
    var param = $(this).val();
    $.get('@Url.Action("List")', { someid: param }, function (data) {
         $('#changeArea').replaceWith(data);
    });
});

$.get()メソッドの 2 番目の引数を使用して、クライアントからの AJAX 呼び出しにクエリ文字列引数を渡す方法に注目してください。

これは、ドロップダウンの選択された値を、someidアクション引数を取る List コントローラ アクションに渡します。

public ActionResult List(string someid) 
{
    ...
}

したがって、JavaScript デバッグ ツールの [ネット] タブに表示されるのは、サーバーに送信される次の AJAX 要求です。

GET /somecontroller/List?someid=123

$.get()ただし、この方法を使用する場合に注意する必要があることが 1 つあります。通常、GET リクエストはブラウザによってキャッシュされます。これは、ブラウザのように同じ URL に多くのリクエストを送信すると/list?someid=123、結果がキャッシュされ、最初のリクエストのみがサーバーに到達することを意味します。しかし、毎回新鮮なデータをサーバーに送り、リクエストごとにサーバーにアクセスしたい場合はどうでしょうか。この場合の推奨される解決策は、$.ajax()代わりにキャッシュを無効にする方法を使用することです。

$('._select_change').change(function() {
    var param = $(this).val();
    $.ajax({
        url: '@Url.Action("List")',
        data: { someid: param },
        cache: false,
        success: function (data) { 
            $('#changeArea').replaceWith(data);
        }
    });
});

これにより、各リクエストにランダムなクエリ文字列パラメーターが追加され、結果がクライアント ブラウザーによってキャッシュされないようになります。

于 2013-01-07T22:45:46.777 に答える
1
$.ajax({
            url: YourURL,
            type: "post",
           data: $('form').serialize(), // one way of submitting full form
           data: { id: "your ID", name: "your name" }, // if you have less parameters use this 
            success: function (data) {
                // handle it

            },
            error: function (data) {
                // handle your error
            },
            dataType: "JSON"
            //async:true
        });
于 2013-01-07T22:46:58.923 に答える