0

ページ上のリンクに JS onclick 関数と MVC アクション メソッドがある場合、アクションの前に JS 関数が起動することに気付きました。

  1. これはいつものことなのだろうか?

  2. ブラウザーが JS とバックエンド メソッドを実行する理由/方法は?

  3. 最初にバックエンド メソッドを実行できますが、それでも JS 関数を起動したいですか?

よろしく

4

3 に答える 3

3

これはいつものことなのだろうか?

ブラウザーが JS とバックエンド メソッドを実行する理由/方法は?

クライアント側 JavaScript は、ページ内のクライアントで実行されます。サーバー側の .NET コードはサーバー上で実行され、HTML ドキュメント (またはその他のリソース) を生成します。

サーバー側のコードを実行するには、ブラウザが HTTP リクエストを作成する必要があります。

HTTP 要求を作成する最も簡単な方法は、現在のページを離れて、サーバーから新しいページを読み込むことです (リンクをたどるか、フォームを送信します)。

クライアント側の JavaScript はページ内で実行されるため、ブラウザーが実行中のページを離れた後は実行できません。

最初にバックエンド メソッドを実行できますが、それでも JS 関数を起動したいですか?

現在のページを離れる代わりに、(他の JS アクションを実行する前に) JavaScript から HTTP 要求を行うことができます。これは通常XMLHttpRequestオブジェクトで行われ、Ajax として知られています。

于 2013-02-15T10:41:51.303 に答える
1
Can I run backend method first, but still want to fire the JS function?

最初の 2 つの回答は、すでに十分に回答されています。3 つ目は、Jquery Ajax を試すことができます。

function SomeFunction(){     

$.ajax({
                    type: 'POST',
                    url: "@Url.Content("Controller/ActionResult")",    
                    data : {                          
                              *yourparameter:value*   //data
                           },           
                    dataType: 'json',
                    success:function(result)
                    {
                      //javascript stuff                     
                    }
           });
}

<a href='#' onclick="return SomeFunction();">ClickHereToSee</a> 
于 2013-02-15T10:53:37.853 に答える
1

ブラウザーが JS とバックエンド メソッドを実行する理由/方法は?

  1. サーバー側のコードでは、requestを返すためにが必要responseです。HTTP はアーキテクチャ上Requestで動作します。Response基本的に、クライアントは応答 (つまり、結果または目的のデータ) を取得するために要求を行います。

サーバーに対して行うたびpostback or return trueに、サーバー側のメソッドが実行されます。

<a href='#' onclick="return SomeFunction();">ClickHereToSee</a> 

ここでは、関数によって返される値を返します。true 値を返すと、サーバー メソッドに送られます。false を返すと、デフォルト アクションが妨げられます。

最初にバックエンド メソッドを実行できますが、それでも JS 関数を起動したいですか?

あなたはできる。Ajax を使用します。基本的に Ajax リクエストは XMLHTTPRequest です。部分的な部分を更新するために使用されます。

于 2013-02-15T10:40:39.947 に答える