性格いい人が優勝

PHPとJavaScriptの連携に困っています。以下のようにフラグを立てテキストボックスに代入しています。

frm.newdata.value = '<?php if(条件) $flg = true; echo $newdata; ?>'

そしてフラグがてばメッセージを出します。

<?php
if($flg) echo 'alert("このデータは登録済みです");';
?>

ところがフラグ($flg)を共有化したいのですが、上下で別物扱いになります。上の処理では代入をしているのでechoでメッセージまでは出せません。
対応策ご存じであれば教えてください。

A 回答 (1件)

PHPとJavaScriptの役割をしっかり分けて考えてください。



【PHP】
・サーバー側で動く
・PHPファイルにリクエストがあると、コードを実行して、出力されたHTMLをブラウザに返す
・リクエストごとに変数の値などは初期化される(状態を保持しない)
・一度HTMLを受信し終えると、(Ajaxを使ってバックグラウンドでやりとりしない限り)更新ボタンを押すまで新たにPHPを実行することは出来ない

【JavaScript】
・ブラウザ側で動く
・更新ボタンを押したり画面遷移しない限り、変数の内容は保持される
・ユーザがブラウザで表示している間はいつでもコードを実行することが出来る

基本的にPHPとJavaScriptで連携するんだったら「JavaScriptのコードを出力する」のではなく「JSONを出力する」方法の方が一般的であり、使い勝手もいいと思います。

JavaScript(jQuery)からPHPのAPIを利用する
http://qiita.com/mpyw/items/62e6e415f86eb30a5ff4
    • good
    • 0
この回答へのお礼

確かにPHPはリクエストごとに変数の値などは初期化されます。

教わったサイトを参考にajax・jQuery・JSONを利用したところやっと思い通りに行きました。
なおJSONに日本語の文字列を渡したところ動作しなくなりましたが、いろいろ試して原因を
つきとめました。今はうまくいっています。

ありがとうございます。

お礼日時:2014/11/03 22:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!