必ずしも再度実行する必要はありませんPage_Load
。つまり、可能です (そして、Web フォーム開発のほとんどの ajax は、ページのライフ サイクル全体を通して実行されます) が、ページの他の部分に依存関係がない場合はRandomSentnce
、静的なWebMethod
[WebMethod]
public static string RandomSentnce ()
{
... get your random sentence here ..
}
そして、次のようなことをします
$.ajax({
type: "POST",
url: "PageName.aspx/RandomSentnce",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
// Do something interesting here.
}
});
WebMethodsは、asp.net Web フォームのライフ サイクル全体を通過するわけではないため、一般的に高速です。
呼び出し時にコンテンツを置き換える必要がある div を知っていますか? もしそうなら、div に ID を与えて上記の成功メソッドで見つけられるようにすることも理にかなっています。
...
success: function(msg) {
$("#myDivID").text(msg.d);
}
...
クリックするだけでわかるものであれば、ajax 呼び出しを呼び出すときに要素への参照を取得し、その参照を success メソッドで使用するだけで済みます (または、jQuery の promise を使用すると、厳密にはsuccess メソッドを渡す必要がありますが、ここでは説明しません)。
ところで、私はこれをすべて覚えているわけではありません。ソースとしてhttp://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/を使用しました。私が言ったことに何か問題がある場合は、その情報源に相談してください。
編集:
あなたは尋ねます:最初に:$.ajaxで、URLで..「PageName.aspx/RandomSentnce」と入力すると、関数に直接移動することを意味します?! 2 番目: 成功関数では、$("#myDivID").text(msg.d); の "d" の意味 ?
#1 への回答: ここで "go" とはどういう意味かわかりませんが、aspx ページの Web メソッドの URL はこのように構成されており、ページからはその関数のみが呼び出されます。
#2 への回答: デフォルトでは (asp.net 3.5 以降)、WebMethod 応答は「セキュリティ上の懸念から」オブジェクトにラップされます ( What does .d in JSON mean?およびhttp://encosia.com/a-を参照)。 aspnet-ajax/ のバージョン間の重大な変更)。基本的に、応答の本文は{"d":"..."}
、javascript オブジェクト (success
関数の最初のパラメーター) に解析されるようになり、メソッドの結果を取得するにd
は、前述のオブジェクトのプロパティを取得するだけです。