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;
?>
No.7ベストアンサー
- 回答日時:
#1です。
以前、回答したものの使いまわしですみません。
http://questionbox.jp.msn.com/qa5641178.html
Ajaxライブラリ prototype.js を別途 ご用意ください。
http://www.prototypejs.org/download
No.6
- 回答日時:
ご提示のソースだと、サーバ側の時刻と、クライアント側の時刻を比較表示するようにはなっているのですが、有効なのは最初だけで、以降はクライアント側の時刻だけ進むようになっています。
setTimeoutで1秒ごとに呼び出している関数で、phpからの情報を取得していませんよね?
既回答者様達が回答されているように、その中で呼び出している、php_time();はソースのロード時に一度実行されて、その時に返されたサーバ側の時刻を保持したまま、後は呼び出される毎にその同じ時刻を返すだけだからです。(オンタイムな時刻を取得してはいません。)
呼び出す毎にサーバ側の時刻を取得したいのであれば、その都度サーバと送受信する必要があります。
でも、1秒のカウントにはクライアント側もサーバ側もそれほど差はないと思いますので、最初に一度比較するだけで十分ではないかと思われますが?
(トラフィック軽減の意味もあります。)
サーバ側の時刻が正確であったとしても、通信のための誤差がありますし、ご提示のソースだとHTMLの読み込みとDOM構築までの時間も加算されます。(ソースが複雑だと時間差が増す)
最初に、サーバ側の時間をもっと詳しく(1秒単位ではなく)取得しておいて、ロード後の経過時間はクライアント側のクロックで加算して、両方の時刻表示を動かすというのではダメなのでしょうか?(目的が不明なのでわかりませんが)
どうしても毎回サーバの時刻を取得したいのであれば、「ajax」あたりをキーにぐぐってみるのがよろしいかと…
詳しくご説明頂きありがとうございます。
やはり、ajaxですよね。
昨日から徹夜で、ajaxについて調べて見ましたが、どうにも難しく
理解するまでに時間がかかりそうです。
時刻に関しては、ご説明頂いた通り、初回の読み込みで対応したいと
思います。
他にやりたかった事は、数秒毎に
ページを遷移せずに、
DB(mysql)にアクセスして、抽出データを、ページの各項目に
表示したいのです。
しかし、サーバーの負荷も考えて、submitボタンを設置して、
ボタン押下で、上記を実現させようとしたのですが、
ajaxではないと無理みたいですね。
分かりやすいサンプルなど、ご存じでしたら教えて頂けると幸いです。
まだ初心者で、なかなか理解するのに時間がかかっていて、
丁寧に説明頂き、本当に感謝しています。
ありがとうございました。
No.4
- 回答日時:
そのphpソースは、Javascriptのテキストを出力してます。
php関数の呼び出し、と思ってるようですが、
javascriptから、phpが書いたjavascriptを実行しているだけですね。
No.3
- 回答日時:
#2です。
ほんの数分の間の追記で申し訳ありません。
> <script type="text/javascript"src="jsphptest.php"></script>
↑この場所に、↓これを読み込んだだけって事です。
function php_time(){
return('2010-02-05 04:00:00');
}
んー、やっぱ 説明下手だ。俺。。。orz
No.2
- 回答日時:
簡単に説明しますね。
> <script type="text/javascript"src="jsphptest.php"></script>
↑ で、PHPスクリプトが読み込まれるのは、一回だけです。
具体的に書くと、↓このテキストが1回だけ読み込まれて、それを一秒ごとにJavaScriptとして実行しているだけです。
function php_time(){
return('2010-02-05 04:00:00');
PHPスクリプトのほうには読み込みに行ってませんので、
当然 同じ時間しか表示されないって言う寸法です。
んー、正直、この説明で ちゃんと伝わるか自信がありません。
誰か 分かりやすい 説明お願いします。。
なるほど!そう言う事ですか、良く分かりました。
しっかり伝わりました。ありがとうございます。
では、こういう風に毎回読みに行きたい時は
どうすればいいんでしょうか?
JavaScriptとphpだけでは、不可能と言う事でしょうか?
可能ならば、どのように記述したら良いか教えて頂けますか?
追加の質問ですみませんが、何とぞ宜しくお願い致します。
No.1
- 回答日時:
とりあえず、以下に間違いありますね。
<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>
**
※ method="post"
<label>JavaScript日時</label>
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
objectのindex値って取れますか?
-
ユーザー入力値の正誤判定をブ...
-
HTMLファイル同士での値渡し
-
カーソルが当たった箇所に吹き...
-
slickのレスポンシブ > center...
-
至急!GetElementById でtdの...
-
クリックされた罫表セルの行番...
-
フォームの値が0だったら空白...
-
return trueとreturn falseの用...
-
自動的に連番生成したURLにリン...
-
ドロップダウンリストの値の足...
-
XMLHttpRequestを利用してPHPへ...
-
チェックボックスにチェックが...
-
FormのonsubmitでJavaスクリプ...
-
フィールドを有効(enabled?)に...
-
Javascriptの"return "について
-
プルダウン4つ連動+α
-
CSVファイルを読みこみ、プルダ...
-
VBScriptでHTMLのセレクトボッ...
-
フォームの指定
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tabindexの取得
-
TextBoxに半角数字以外を入れた...
-
ページ間で変数を保持したい
-
JavaScriptでCGIの呼出し・...
-
テキストエリアに履歴を残したい
-
マイナスなら赤字で表示したい...
-
フォームの内容でリンク先URLの...
-
jQueryのdatepickerの日付が選...
-
プルダウンで選択された値を別...
-
VBscriptの配列変数をJavascrip...
-
onBlurのイベントを使ってデー...
-
改行コード変換しても、引数の...
-
HTMLファイル同士での値渡し
-
VBSからjavascript
-
HTMLとJavaScriptで作った表示...
-
FireFoxでfocus()が上手く動かない
-
カーソルが当たった箇所に吹き...
-
どちらかひとつのテキストボッ...
-
フォーカス設定について教えて...
-
一度もフォーカスされないテキ...
おすすめ情報