• ベストアンサー

PHPで外部関数での返値の取得の仕方について

はじめまして。PHPの勉強を始めたばかりの者です。 <?php 関数 ?> で、関数はJavaScriptで書いてあります。 --関数-- <script language="JavaScript"> function 関数(){ a = 計算; return a; } </script> としているのですが、関数がないとか返値がないみたいなエラーメッセージが表示されます。 どなたか詳しい方、ぜひご指導願います。

  • PHP
  • 回答数3
  • ありがとう数5

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

  • ベストアンサー
  • stanaka
  • ベストアンサー率44% (13/29)
回答No.3

 時間がたっていますが・・・.  クライアントサイドで動作するJavaScriptとサーバサイドで動作するPHPは通信することが出来ません.  PHPがprint()文を実行してJavaScriptを含む文書を書き出し,その結果がブラウザにわたってブラウザがJavaScriptを実行し始めるときには,すでにサーバ側でのPHPプログラムの実行は終了しています.JavaScriptの結果をサーバ側に返したい場合は,新たにPHPプログラムをHTTPで呼び出し,POSTかGETで値を渡す必要があります.  一度読み込んだページをサーバ側のプログラムと通信しながらダイナミックに更新する技術はMicrosoftがVBScriptやJScriptとASPに対するオプションで提供していたと思いますが,PHPではこれに対応することは(おそらく)出来ないでしょう.

black_breath
質問者

お礼

ご指導ありがとうございます。 >一度読み込んだページをサーバ側のプログラムと通信しながらダイナミック >に更新する技術はMicrosoftがVBScriptやJScriptとASPに対するオプションで>提供していたと思いますが,PHPではこれに対応することは(おそらく)出来>ないでしょう. そうですか。多数の人々にご指導頂きありがとうございました。また、わからないことがありましたら質問させていただきます。

その他の回答 (2)

  • kusukusu
  • ベストアンサー率38% (141/363)
回答No.2

>>phpはcgiと同じくサーバサイドの機能です。 >>JavaScriptはクライアントサイドの機能です。 >は、わかります。が、イベントを拾って(onClickなど) >でのJavaScriptは可能ですよね?最初のほうにJavaScript >をprint("");で囲んで走らせ、その返値をPHPで分岐の条 >件として使用をしたいんです。 分かっていないに一票。 分かっていないからその質問がでるんです。 もう一度、「サーバーサイド」、「クライアントサイド」という言葉を、考えてみてください。

black_breath
質問者

お礼

ご指導ありがとうございます。 いまいちなんですが、 「サーバーサイド」→「クライアントサイド_1」→「サーバーサイド」→「クライアントサイド_2」という風にはできませんか? 「クライアントサイド_1」で変数を取得し、「サーバーサイド」で分岐し結果は「クライアントサイド_2」へと表示する は可能ではないんですか?

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

サーバサイドの話とクライアントサイドの話がごちゃまぜになっていますね。 phpはcgiと同じくサーバサイドの機能です。 JavaScriptはクライアントサイドの機能です。 <script>~</script> 内の関数はあくまでJavaScriptの機能なので、phpから見れは単なるTAGと同じです。 つまり、ブラウザに読み込まれて初めて動作するものです。従ってphpがHTMLを出力している間(クライアントにデータを返している間)の制御はサーバ側なのでJavaScript内の関数は動作できません。 もう一度頭の中を整理して、サーバサイドなのかクライアントサイドなのかを区別しましょう。

black_breath
質問者

お礼

回答ありがとうございます。 >phpはcgiと同じくサーバサイドの機能です。 >JavaScriptはクライアントサイドの機能です。 は、わかります。が、イベントを拾って(onClickなど)でのJavaScriptは可能ですよね?最初のほうにJavaScriptをprint("");で囲んで走らせ、その返値をPHPで分岐の条件として使用をしたいんです。 ご指導願います。

関連するQ&A

  • PHPにおいての関数ポインタ(リファレンス)の実装の仕方

    こんにちわ, 今PHP4.3.4を使用してWebを作成しています。 C言語で言う関数ポインタを実装したいのですが,どうすればいいのでしょうか。 たとえば, function hoge(){ return 5; } function hoge2(){ return 4; } function hoge3(){ return 3; } と宣言して function main($a, $b)[ return ($a + $b); } としたときに, main(hoge(), hoge2()); をしたときに9 main(hoge()2, hoge3()); をしたときに7 とするようにmainの関数をつくりたいのですが,どうすればいいのでしょうか。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • JavaScriptからphp関数の呼び出し

    javaScriptで1秒毎にphpの関数を呼び出しているのですが、 php側で、returnしている日時が動的に表示されません。 何がいけないのか教えて頂けますでしょうか? 色んな参考ページを見ると、phpの関数で動的に 動かせると書いてあるのですが、動的になりません。 -------------------------------------------------------- <jsphptest.htmlソース> <html> <head> <script type="text/javascript"src="jsphptest.php"></script> <script language="javascript"> <!-- function time() { //JavaScriptで日時表示 var now = new Date(); mon = now.getMonth()+1; day = now.getDate(); hou = now.getHours(); min = now.getMinutes(); sec = now.getSeconds(); year = now.getYear(); if (year < 2000) { year += 1900; } if (mon <= "9"){mon = "0" + mon;}; if (day <= "9"){day = "0" + day;}; if (hou <= "9"){hou = "0" + hou;}; if (min <= "9"){min = "0" + min;}; if (sec <= "9"){sec = "0" + sec;}; document.form1.j_tokei.value= year +"/"+ mon +"/"+ day +" "+ hou +":"+ min +":"+ sec; //PHP関数の呼び出し document.form1.p_tokei.value= php_time(); //1秒毎 setTimeout('time()',1000); } // --> </script> </head> <body onLoad="time();"> <form name="form1" mathod=post> JavaScript日時<input type="text" name="j_tokei" size=25><br> PHP日時<input type="text" name="p_tokei" size=25> </form> </body> </html> -------------------------------------------------------- <jsphptest.phpソース> <?php $str .= "function php_time(){"; $str .= "return('".date('Y-m-d H:i:s')."');"; $str .= "}"; echo $str; ?>

  • onclickイベントで複数関数コール

    下記のようなPHPスクリプトで、onclickイベントで、2つの関数をコールしてるのですが、 何か間違ってますでしょうか。onclickイベントで複数関数コールするときは、カンマで 区切ればよいと書いたあった投稿を見たことがあるのですが。それとも、readcsv()関数の JavaScript内での、PHPの書き方にミスがあるのでしょうか。ご指導よろしくお願いします。 </HEAD> <BODY><script type="text/javascript"> <SCRIPT> function readcsv(){ <?php $list=read_csv(); return $list; ?>;} function setvalue(){ // 変数宣言 var batch_num = list["batch_num"]; ~ // --> </SCRIPT> <INPUT type="button" value="csv参照" onClick="setvalue(), readcsv()"></TD></TR>de

  • 関数の引数として配列を渡す方法

    初めて質問させていただきます。 現在下記のように関数に配列の引数を渡して、配列の個数を表示しているのですが、必ず0件になってしまいます。 <html> <head> <title>連続して関数を呼び出す</title> <script language="JavaScript"> <!-- function aaa (est) { alert(est.length); return; } // --> </script> </head> <body> <script language="JavaScript"> <!-- var hai = new Array(); hai["a"] = true; hai["b"] = false; aaa(hai); // --> </script> </body> </html> もしかしたら、受け渡し方が悪いのかもしれないのですが、色々調べても分からなかったので質問させていただきました。 argumentsというものを使うのかもしれませんがうまくいきませんでした。 分かる方がいらっしゃいましたら、ご教授ください。

  • 「関数が定義されていない」とのエラーが出る

    こんにちは,よろしくお願いします。 何が何だか分からなくて困っています。 IEでは問題なく動くのに,Firefoxだと関数が定義されていないとのエラーが出ます。「<関数名> is not defined 」 スクリプトは,外部ファイル化してあります。キータイプの間違いもありません。何度も確認しました。 function aaa(){  (スクリプト) } を <body onload="aaa()"> のようにして呼び出しています。 いったい,何が悪いのでしょうか? また,Operaだと,「リンク先のスクリプトを読み込むことができません」とのエラーが出ます。 元になるPHPファイルでは, <script type="text/javascript" language="javascript" src="../javascript/AAAAA.js"></script> のようにして呼び出しています。 もちろん,ファイルネームのタイプミスはありません。 ちなみに,スクリプトの内容は,日付関連のコードを記述しています。 試行錯誤している時に,他の日付関連のコードを実行したときに, dayoption is not defined というエラーが出たことがあります。 関数が存在しているのに,定義されていないと出るのは,もしかすると,日付関連の関数等の使い間違いではないかとも考えています。 使っているものは,Date()とgetYear()です。これらのうちのどちらかがFirefoxやOperaだとサポートされていないのでしょうか? どうか御指導ください。よろしくお願いします。

  • PHP内でjsファイルの関数は使えないのでしょうか

    こんばんは、Webページ制作の勉強で問題にぶつかり、少々お知恵をお借りしたく質問させて頂きました。 あるPHPファイルの中の <!doctype html> <html> //ここにHTMLの記述があるとします。 </html> のHTMLの記述の中に <script src="example_A.js"></script> <script src="example_B.js"></script> のような形で他のページでも使っているJavascriptのファイルを読み込んで使用しようとしたのですが、一部の処理だけが行われないようのです。 そこでjsファイルの中で使えない記述に共通点が無いか確認してみたところ、 $(function() {   //ここに処理 }); のように、関数のみが動作して居ない事が解りました。 そこで質問なのですが、PHPファイルの中では、<html>の中で記述されたスクリプトだとしても関数の中で記述された処理は使えないという事なのでしょうか? また、もしPHPの中でも関数を動作させる方法があれば、教えて頂けないでしょうか。 宜しくお願い致します。

    • 締切済み
    • PHP
  • PHP内でJavaScriptの処理は可能?

    PHP内変数 $flag をJavaScriptで参照し、条件処理を行っています。 JavaScriptの処理は onClick() のタイミングで行います。 ソースの概要は以下のようになります。 1.ログインしているか見る(flagでチェック、1はログイン中…) 2.flagのデータ取得、条件処理。 3-1. flagが1以外なら、true処理 3-2. flagが1なら、false処理  ・  ・ と、こんな処理を行いたいのですが…上手く出来ません。 ソースは以下になります。PHP側の変数 "$flag" までの取得は上手く出来たのですが、 JavaScript側の処理で、つまづいてます…。 で、表題にもあるようにPHP内でJavaScriptの処理は可能でしょうか? アルゴリズム的に、アドバイスなどありましたらご教授ください。 以下が主要部分のソースになります。 <?php echo("<script Language='JavaScript'> "+ "<!-- "+ "function check(){ "+ "if($flag != '1'){ "+ "return true; "+ "} "+ "else{ "+ "header('Location: ./error.html'); "+ "exit(); "+ "return false; "+ "} "+ "} "+ "//--> "+ "</script> "); echo(" <a href='test.html'><img src='botton.gif' onClick='check()' "> アドバイスお願い致します。

    • 締切済み
    • PHP
  • javascriptで2箇所のphpの関数を取得したいのです。

    javascriptで2箇所のphpの関数を取得したいのです。 見よう見まねでやっている初心者です。よろしくお願いします。 javascriptにてphpの関数をよびだしてhtmlのinput type="text"に値を出力しようとしています。 2か所のphp を下記のようにhtmlに書いて取得しようとしたのですがどちらか一方しか取得できません。 なんとか両方を読み込めるようにできないでしょうか?分かりにくい質問かと思いますので例を書いて見ましたのでどうかよろしくお願いいたします。 (例) <script type="text/javascript" src="../data/zzz.php?aaa=abc" ></script> <script type="text/javascript" src="../../../data/xxx.php?bbb=abc" ></script> 上記のように書いても片方しか取得しないようです。 以下../dataのzzz.phpのphpです。 <?php $aaa = $_GET['aaa']; header("Content-type: application/x-javascript"); echo "window.onload = function () {"; if ($aaa== 'abb') {echo "document.getElementById(\"xxx\").value=100;","document.getElementById(\"yyy\").value=1;";} elseif ($aaa == 'abc') {echo "document.getElementById(\"tanka\").value=120;","document.getElementById(\"yyy\").value=2;";} echo "}"; ?> 以下../../../dataのxxx.phpのphpです。(例) <?php $bbb = $_GET['bbb']; header("Content-type: application/x-javascript"); echo "window.onload = function () {"; if ($bbb== 'abb') {echo "document.getElementById(\"zzz\").value=50;","document.getElementById(\"vvv\").value=10;";} elseif ($bbb == 'abc') {echo "document.getElementById(\"tanka\").value=51;","document.getElementById(\"vvv\").value=20;";} echo "}"; ?> 以上2か所のディレクトリのphpを取得したいのですが、これはできない事なのでしょうか?ちがうディレクトリから取得しなければ更新作業が大変になってしまうのです。どうかよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 関数を呼び出す関数

    Javascriptを勉強し始めたばかりの者です。 やりたいことを実現するうまい方法が見つからなくて困っています。 例えば、以下のように複数の関数があらかじめあって、 sample1() sample2() sample3() ・ ・ sample20() これらをまとめて実行する function all() といった関数を作りたいと思っています。 function all()の中にそれぞれ羅列すれば実現できる?のですが (例) <script type="text/javascript"> <!-- function sample1(){ なんらかの処理1 } function sample2(){ なんらかの処理2 } ・ ・ ・ //前述関数をまとめて実行する関数 function all(){ sample1(); sample2(); sample3(); ・ ・ sample20(); } //--> </script> もっとうまいやり方はないものでしょうか?羅列するというのはどうも・・・。 どうしてこのような事をしたいのかというと、sample1()、sample2()などはそれぞれ独立していて関連しあっていません。 単体で動かしたいときもあれば、まとめて全部実行したいという場合もあってこのようなことを考えています。 どなたかご教授願えたら幸いです。どうぞよろしくお願いします。

  • PHPでレイティングバーの値を取得

    下記のようなJQuery スクリプトにおいて、 レイティングバーの値を、PHP変数に取得するには どうすればいいのでしょうか。ご指導お願い致します。 ちなみに、 $manzokudo = $_POST['rating']; var_dump($manzokudo); で、ダンプしたところ、中身がNULLでした。 【detail.php】 <link rel="stylesheet" type="text/css" href="jquery.rating.css"> <script type="text/javascript" src="jquery-2.1.3.js"></script> <script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.1.0.js"></script> <script type="text/javascript" src="jquery.rating.js"></script> <script type="text/javascript"> $(function () { // レーティングバーを有効化 $('.starbar').rating({ cancel: '消去', // 「キャンセル」ボタンのテキスト // ★アイコンをクリックした時の処理 callback: function(value){ // detail.phpに対してレイティングバーの値を送信 $.post( 'detail.php', { rating: value }, function(){ window.alert('「' + value + '」をつけました。'); } ); } }); }); </script> </head> <body> <?php $_POST[] ?> </body> </html>