• ベストアンサー

Onclickイベントで実行されるユーザー定義関数の実行を直接サーバーに命じることはできないでしょうか。

javascriptの素人なので仕組みを勘違いしているかもしれませんが,  Onclick=My_func(引数1)という記述があったとして、この意味は、(ボタンとかが)クリックされたら、My_func(引数)をサーバー側で実行するという意味ですよね。 それなら、Webサーバーに「My_func(引数1)を実行せよ」というコマンドを送るのと同等という理解でよろしいですか。 この推測が正しいとして、 1.「My_func(引数)を実行せよ」という命令はどのようなメソッドを使って送ればよいのでしょうか(WebBrowserコントロールのNavigateのPostdataを使うのでしょうか?)。 2.送り先URLはそのページが表示されているアドレスでよいのでしょうか。それとも、別の送り先の可能性もあるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • edomin
  • ベストアンサー率32% (327/1003)
回答No.2

#1です。 「「クライアントでMy_func(引数)が実行されました。」という情報がサーバーに送られる」 この情報もサーバには送信されません。 クライアントから送信しようとする内容だけが送信されます。 なので、クライアントが送信(「次のページへ移る」など)のデータを送らなければ何も送信されません。(基本的に)

phy0
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • NTJ
  • ベストアンサー率44% (46/103)
回答No.3

なんとなく・・・JavaScriptとJavaを混同しているように感じられます。 両者は全くの別物なので、注意してくださいね。(ご存知でしたらすみません) で、JavaScriptは、「ブラウザの機能を動作させるスクリプト言語」です。 従って、JavaScriptの動作は全てブラウザ内に閉じており、JavaScriptの動作中には、サーバーとの交信は行われません。 質問者さんの動作させたい「ユーザー定義関数」は、JavaScriptで記述した関数でしょうか? もしそうであれば、その関数を同じHTML内へ記述するか、外部スクリプト参照でHTML内へ読み込んでおかない限り、処理は動作しない筈です。 例を書きますと・・・ <SCRIPT> function My_func(arg){ alert('引数は'+arg+'です。'); } </SCRIPT> <INPUT type=button onClick="My_func('AAA');" value="AAA"> <INPUT type=button onClick="My_func('BBB');" value="BBB"> こんな具合になります。 上記をテキストエディタで拡張子を.htmlにして、PCに保存してみてください。 PCにWebサーバー機能が全く無くても、想定通りに動作する筈です。 逆に、onClickの先にURLを記述しても、単にスクリプトエラーになるだけです。 つまり・・・JavaScriptはWebサーバーとは無縁の環境で動作しているんです。 どうしてもサーバーに処理をさせたいのであれば、Ajaxの手法が必要になります。

phy0
質問者

お礼

ありがとうございました。 >JavaScriptとJavaを混同しているように感じられます。 混同というより、どちらも良くわかっておりません。勉強になりました。

  • edomin
  • ベストアンサー率32% (327/1003)
回答No.1

基本的に、 「My_func(引数)をサーバー側で実行する」 が違っています。 javascritはあくまでもブラウザをインタープリタのように使用してクライアントで実行されます。 なので、「My_func(引数)」という関数も元の記述ファイルの中に有るはずです。

phy0
質問者

補足

ありがとうございます。 >「My_func(引数)」という関数も元の記述ファイルの中に有るはずです。 ご指摘のとおり、ありました。ということは「クライアントでMy_func(引数)が実行されました。」という情報がサーバーに送られるという理解でよろしいでしょうか。

関連するQ&A