14

私はJavaScriptで次のコードを持っています:

<script>
var a="Hello";
</script>

PHP コード:-

<?php 
$variable = // I want the above JavaScript variable 'a' value to be stored here
?>

注:フォーム送信には入れたくありません。JavaScript にいくつかのロジックがあり、それを同じ PHP ページで使用したいのですが、どうすればよいか教えてください。

4

8 に答える 8

22

JS と PHP が同じドキュメントに存在する場合、PHP が最初に (サーバーで) 実行され、JS が 2 番目に (ブラウザーで) 実行されることを覚えておく必要があります。 PHP で JS を出力しますが、これは実際には 2 つのエンジン間の相互作用ではありません)。

それを念頭に置いて、最も近いのは、JS で PHP 変数を使用することです。

<?php
$a = 'foo'; // $a now holds PHP string foo
?>
<script>
    var a = '<?php echo $a; ?>'; //outputting string foo in context of JS
                                 //must wrap in quotes so that it is still string foo when JS does execute
                                 //when this DOES execute in the browser, PHP will have already completed all processing and exited
</script>
<?php
//do something else with $a
//JS still hasn't executed at this point
?>

前述したように、このシナリオでは、PHP (すべて) がサーバーで FIRST を実行するため、次のことが発生します。

  1. $a文字列 'foo' として作成されるPHP 変数
  2. $a一部の JavaScript (現在実行されていない) のコンテキストで出力されるの値
  3. PHPでさらに多くのことを行う$a
  4. var が割り当てられた JS を含むすべての出力がブラウザーに送信されます。

書かれているように、これにより、実行のためにブラウザーに次のものが送信されます (わかりやすくするために JS コメントを削除しました)。

<script>
    var a = 'foo';
</script>

その後、JS は独自の変数aを「foo」に設定して実行を開始します (この時点で、PHP は対象外になります)。

つまり、この 2 つが同じドキュメント内に存在し、サーバーとの追加の対話が実行されない場合、JS は PHP に影響を与えることはできません。さらに、PHP が JS に及ぼす影響は、何らかの JS または JS のコンテキストで何かを出力する単純な機能に限定されています。

于 2013-02-02T14:49:02.007 に答える
19
<html> 
<head>
    <script>
        var a="Hello";
    </script>

</head> 

<body> 
    <?php 
        echo $variable = "<script>document.write(a)</script>"; //I want above javascript variable 'a' value to be store here
    ?>
</body> 

于 2014-05-09T11:44:06.607 に答える
4

$_GET理想的な方法は、AJAX 呼び出しで渡すことですが、迅速で汚い方法の場合は、この変数をパラメーターに指定してページをリロードするだけです。

<script>
  var a="Hello";
  window.location.href = window.location.href+'?a='+a;
</script>

ページがリロードされ、PHP で$_GET['a']変数にアクセスできるようになります。

<?php 
  $variable = $_GET['a'];
?>
于 2013-02-02T14:42:14.310 に答える
1

これがフォーム送信に関連している場合は、フォーム内で非表示の入力を使用し、非表示の入力値をこの変数値に変更します。次に、php ページでその非表示の入力値を取得し、フォームの送信後にそれを php 変数に割り当てることができます。

アップデート:

あなたの編集によると、javascript と php の仕組みを理解していないようです。Javascript はクライアント側の言語で、php はサーバー側の言語です。したがって、サーバーで関連するページを実行するときに、javascript ロジックを実行して、その変数値を php 変数に使用することはできません。クライアント ブラウザが Web サーバーから返された Web ページを処理した後、関連する JavaScript ロジックを実行できます (関連するページの php コードが既に実行されています)。JavaScriptコードの実行後、関連する値を関連するjavascript変数に割り当てた後、フォーム送信またはajaxを使用して、そのjavascript変数値を別のphpページで使用するために送信できます(または、同じphpページを処理して取得するリクエスト) )。

于 2013-02-02T14:38:23.930 に答える
0

あなたは本当にできません。PHP はサーバーで生成され、ブラウザーに送信され、そこで JS が処理を開始します。したがって、ページ上の JS で何が起こっても、PHP はそれを知りません。@manjulaは正しいです。それを実現したい場合は、POSTまたはajaxを使用する必要があります。

于 2013-02-02T14:42:45.470 に答える