ページ上のリンクに JS onclick 関数と MVC アクション メソッドがある場合、アクションの前に JS 関数が起動することに気付きました。
これはいつものことなのだろうか?
ブラウザーが JS とバックエンド メソッドを実行する理由/方法は?
最初にバックエンド メソッドを実行できますが、それでも JS 関数を起動したいですか?
よろしく
ページ上のリンクに JS onclick 関数と MVC アクション メソッドがある場合、アクションの前に JS 関数が起動することに気付きました。
これはいつものことなのだろうか?
ブラウザーが JS とバックエンド メソッドを実行する理由/方法は?
最初にバックエンド メソッドを実行できますが、それでも JS 関数を起動したいですか?
よろしく
これはいつものことなのだろうか?
ブラウザーが JS とバックエンド メソッドを実行する理由/方法は?
クライアント側 JavaScript は、ページ内のクライアントで実行されます。サーバー側の .NET コードはサーバー上で実行され、HTML ドキュメント (またはその他のリソース) を生成します。
サーバー側のコードを実行するには、ブラウザが HTTP リクエストを作成する必要があります。
HTTP 要求を作成する最も簡単な方法は、現在のページを離れて、サーバーから新しいページを読み込むことです (リンクをたどるか、フォームを送信します)。
クライアント側の JavaScript はページ内で実行されるため、ブラウザーが実行中のページを離れた後は実行できません。
最初にバックエンド メソッドを実行できますが、それでも JS 関数を起動したいですか?
現在のページを離れる代わりに、(他の JS アクションを実行する前に) JavaScript から HTTP 要求を行うことができます。これは通常、XMLHttpRequest
オブジェクトで行われ、Ajax として知られています。
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>
ブラウザーが JS とバックエンド メソッドを実行する理由/方法は?
request
を返すためにが必要response
です。HTTP はアーキテクチャ上Request
で動作します。Response
基本的に、クライアントは応答 (つまり、結果または目的のデータ) を取得するために要求を行います。サーバーに対して行うたびpostback or return true
に、サーバー側のメソッドが実行されます。
<a href='#' onclick="return SomeFunction();">ClickHereToSee</a>
ここでは、関数によって返される値を返します。true 値を返すと、サーバー メソッドに送られます。false を返すと、デフォルト アクションが妨げられます。
最初にバックエンド メソッドを実行できますが、それでも JS 関数を起動したいですか?
あなたはできる。Ajax を使用します。基本的に Ajax リクエストは XMLHTTPRequest です。部分的な部分を更新するために使用されます。