2011-08-10 9 views
1

PHPの静的変数に問題があります。別のJS関数からphp関数を呼び出していますが、静的変数は増加していません。そうではありませんか?静的変数PHPの問題

ここには、私がやろうとしているようなものがあります。

<?php 
    function someFunc() { 
     static $y = 0; 
     ++$y; 
     return $y; 
    } 
?> 
<script> 
    function someFunc() { 
     var x = 0; 
     while (++x<=31) { 
      <?php echo someFunc(); ?> 
     } 
    } 
</script> 

このコードの問題は、<?php echo someFunc(); ?>が '1'を返すだけです。それが繰り返されるたびに。 誰かがなぜこれが起こっているのか、回避策があるのか​​説明することができます。

+4

。 JavaScriptはPHPの 'someFunc'にはアクセスできません。なぜなら、最初のものはクライアント側の言語であり、後者はサーバー上で実行されるからです。 – Shef

答えて

4

PHPは、javascriptがユーザーのブラウザに読み込まれる前に実行され、終了するサーバーサイドのスクリプトです。

これは、サーバーがクライアントにページを送信するときにPHP関数が1回実行されることを意味します。ソースコードのクライアント側を見てください。これは次のようになります。

<script> 
    function someFunc() { 
     var x = 0; 
     while (++x<=31) { 
      1 
     } 
    } 
</script> 

javascriptとPHPを混在させることはできません。これは単純なことですが、サーバー側のリソースが必要な場合はすべてのPHPを使用し、そうでない場合はすべてのJavaScriptを使用します。ページのロードが完了した後にサーバー側のリソースが必要な場合は、AJAXを調べたいと思うでしょう。

0

javascriptはあなたのPHP関数を呼び出すつもりはない、彼はトウが接続されていません。ページがレンダリングされるときに、PHP someFunc()の戻り値を単に返すだけです。

0

phpとjsが同時に実行されないので、phpはサーバ上で実行され、ブラウザに送られ、そこでjsが実行されます。ブラウザに送信されているもの。このため

は、次のとおりです。JS研はこの時点でループするので

<script> 
    function someFunc() { 
     var x = 0; 
     while (++x<=31) { 
      1 
     } 
    } 
</script> 

PHPのsomeFuncは()1が一度実行されます。

+0

私はAJAXを試してみるつもりです。私はそれらのように混ぜる必要があるので...うーん... ありがとう、みんな!あなたはたくさんの助けをしていました。 :D – Cweeener

+1

@Cweener:彼に感謝しません..彼の答えを選択し、彼にいくつかのポイントを与える;-) – prodigitalson

1

コードベローはプレーンテキストと解釈され、実行されません。 JavaScriptのclienside - <?php echo someFunc(); ?>は一度実行し、1

PHPを返しますながら

<script> 
    function someFunc() { 
     var x = 0; 
     while (++x<=31) { 
      <?php echo someFunc(); ?> // EXCEPT FOR THIS LINE 
     } 
    } 
</script> 

は、サーバー側で実行されます。

あなたが効果的にテキスト以下、ブラウザに渡し生成:それはJavaScriptがロード時に変数として持つことになりますものですので

<script> 
    function someFunc() { 
     var x = 0; 
     while (++x<=31) { 
      1 
     } 
    } 
</script> 
関連する問題