ページ上のリンクに 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 です。部分的な部分を更新するために使用されます。