• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部ファイルで定義されているjqueryのユーザ定義関数を、イベントな)

外部ファイルで定義されているjqueryのユーザ定義関数を、イベントなしにphpで呼び出したい

このQ&Aのポイント
  • jqueryのユーザ定義関数を、イベントなしにphpで呼び出す方法を教えてください。
  • フォームからPOSTで受け取った値を使用して、jqueryのユーザ定義関数をphpで呼び出す方法を教えてください。
  • ページ内で何度も呼び出す必要がある場合、クリックイベントを利用せずにjqueryのユーザ定義関数をphpで呼び出す方法を教えてください。

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

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.2

>コードの途中でbodyタグが再びでてきてもよいものなのでしょうか? ダメです。申し訳ない。かえってややこしくしてしまいました。<body の件は忘れてください。 >alertが実行されることなくページが表示されるだけでした 簡単に作成したこちらでは出来ているのですが…。 jQuery.jsのどこに記述したのかも気になりますが、以下ではどうでしょうか。 if($_POST['submit']){ $value = $_POST['submit']; echo <<<EOL <script> \$(document).ready(function(){ funcTest('$value');}); </script> EOL; } PHPとJavaScript両方をいじっていると混乱するかもしれませんが、 「JavaScriptは、HTMLタグの一種」と考えれば分かりやすいと思います。 PHPで HTMLタグをecho するようにJavascriptを出力するといいです。

hayu-14
質問者

お礼

再びのご回答ありがとうございます おかげさまで無事関数を呼び出すことができました >jQuery.jsのどこに記述したのかも気になりますが、以下ではどうでしょうか。 元々は、 $(function(){ function funcTest(msg){ alert(msg); } } と書いていました 教えていただいたコードをこの状態で使ってみたところまたしてもできなかったのですが、 $(function(){} の外にfuncTest()を出したらうまくいきました ちなみに、前回の回答の1つ目でもalertが表示されました jQuery.js内で定義した関数を使う分には$(function(){}内に定義していても使えたため、そういうものなのだと思い使っていたのですが、外に出したらうまくいったということは外部で使う分にはこういった書き方は駄目なのでしょうか・・・ いずれにせよ、これでプログラムの作成を進めることができそうです 大変勉強になりました。ありがとうございました

その他の回答 (2)

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.3

>元々は~ の書き方でもOKですよ。ただ質問者さまの場合、 ・一番最後のカッコ ) の閉じ忘れ ・function を定義しているだけで実行してはいない のでできなかったのでしょう。 元々の方法で書くなら $(function(){ function funcTest(msg){ //関数を定義しているだけ alert(msg); } funcTest("これで実行される"); }) となります。 ※PHPで出力なさる場合は、$マークは変数とみなされないよう、適宜 \$ としてください。

hayu-14
質問者

お礼

補足へのご回答ありがとうございます jquery.jsで定義して、phpで呼び出せば実行できるのだと思っていました・・・ 定義だけでなく実行もしないといけないのですね・・・

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.1

jQueryは JavaScript ですよね。PHPとはまったく別の言語ですから、 PHPでJavaScriptの関数を使用することは不可能ですよ。 ただ、 >フォームからPOSTで受け取った時にだけ関数を呼び出したい のであれば、PHPで判定後、JavaScriptとして書き出してやればよいでしょう。 if($_POST['submit']){   $value = $_POST['submit'];   echo "<script> funcTest('$value'); </script>"; } あるいは echo $value ? "<body onLoad=\"funcTest('$value')\">" : "<body>"; とか

hayu-14
質問者

お礼

ご回答ありがとうございます やはり無理なんでしょうか・・・ 教えていただいたコードをそのまま書いてみたのですが、alertが実行されることなくページが表示されるだけでした phpファイルのヘッダ部に function funcTest(msg){ alert(msg); } とした所、2つ目のコードでalertが実行されましたがこれはjqueryではなくただのjavascriptですし・・・ これはふと思ったのですが、2つ目のコードで <body onload ・・・  としていますが、コードの途中でbodyタグが再びでてきてもよいものなのでしょうか?