変数を生成するphpファイルがあり、変数をメインページのonclickによって呼び出されるjavascript関数に入れたいと思います。これは PHP から JavaScript に送信できますか?
6 に答える
次のことができます。
<script type='text/javascript'>
document.body.onclick(function(){
var myVariable = <?php echo(json_encode($myVariable)); ?>;
};
</script>
書くだけ:
<script>
var my_variable_name = <?php echo(json_encode($php_string)); ?>;
</script>
my_variable_name
これで、上記のコードの下の任意の場所で、という名前の JavaScript 変数として使用できるようになりました。
JavaScript は、PHP で解析されたファイル内で定義する必要があります。
たとえば、index.php に次のように配置できます。
<?php
$time = time();
?>
<script>
document.write(<?php echo $time; ?>);
</script>
私があなたのことを正しく理解していれば、次のようなことができるはずです。
function clicked() {
var someVariable="<?php echo $phpVariable; ?>";
}
優れたオプションは、jQuery/AJAX を使用することです。 これらの例を見て、サーバーで試してみてください。この例の FILE1.php では、空白の値が渡されていることに注意してください。必要に応じて値を渡すことができます。これは次のようになります (javascript vars が呼び出されたと仮定するusername
とpassword
:
data: 'username='+username+'&password='+password,
FILE2.php の例では、これらの値を次のように取得します。
$uname = $_POST['username'];
$pword = $_POST['password'];
次に、MySQL ルックアップを実行し、次のように値を返します。
echo 'You are logged in';
これによりYou are logged in
、FILE1.php の success 関数にメッセージが配信され、メッセージ文字列が「data」という変数に格納されます。したがって、alert(data);
成功関数の行はそのメッセージを警告します。もちろん、echo
テーブル構造全体など、大量の HTML であっても、好きなようにできます。
確認する別の良い例を次に示します。
アプローチは、フォームを作成し、jQuery を使用してボタンの押下を検出し、AJAX を介してセカンダリ PHP ファイルにデータを送信することです。上記の例は、その方法を示しています。
セカンダリ PHP ファイルは変数を受信し (送信された場合)、応答を返します (送信するものは何でも)。その応答は、AJAX 呼び出しの Success: セクションに「データ」として表示されます (これらの例では)。
jQuery/AJAX コードは JavaScript であるため、2 つのオプションがあり<script type="text/javascript"></script>
ます。メインの PHP ドキュメント内のタグ内に配置するか<?php include "my_javascript_stuff.js"; ?>
、PHP ドキュメントの下部に配置できます。jQuery を使用している場合は、例のように jQuery ライブラリを含めることを忘れないでください。
あなたの場合、私が提案した最初の例をほとんど反映して、データを送信せず、AJAX 成功関数で応答を受信できるように思えます。ただし、そのデータを処理する必要がある場合は、success 関数内で行う必要があります。最初は少し奇妙に思えますが、うまくいきます。
PHP値をJavaScriptに渡すことができます。PHPはサーバー側を実行するため、値が計算され、JavaScriptを含むHTMLにエコーできます。次に、JavaScriptは、PHPがサーバー側で計算した値を使用してクライアントブラウザーで実行されます。
<script type="text/javascript">
// Do something in JavaScript
var x = <?php echo $calculatedValue; ?>;
// etc..
</script>