web-dev-qa-db-ja.com

javascript関数でphpを使用するにはどうすればよいですか

<html>
    <?php
        $num = 1;
        echo $num;
    ?>
    <input type="button"
           name="lol" 
           value="Click to increment"
           onclick="Inc()" />
    <br>
    <script>
        function Inc()
        {
        <?php
            $num = 2;
            echo $num;
        ?>
        }
    </script>
</html>

これは私がこれまでのところ持っているものですが、動作していません、私はajaxまたは何かを使用する必要があると思いますが、私は何をすべきか分かりません。

ありがとう

20
fosho

JavaScriptを使用してPHPコードを実行することはできません。ユーザーがページを受信すると、サーバーはすべてのPHPコードを評価して実行し、それを取り出します。 。たとえば、これは動作します:

alert( <?php echo "\"Hello\""; ?> );

サーバーがこれを評価するため:

alert("Hello");

ただし、PHPで操作を実行することはできません。

この:

function Inc()
{
<?php
$num = 2;
echo $num;
?>
}

これに対して単純に評価されます:

function Inc()
{
    2
}

PHPスクリプトを呼び出さない場合は、一連のパラメーターから値を返す別のページを呼び出す必要があります。

たとえば、これは機能します:

script.php

$num = $_POST["num"];
echo $num * 2;

Javascript(jQuery)(別のページ):

$.post('script.php', { num: 5 }, function(result) { 
   alert(result); 
});

これにより、10がアラートされるはずです。

がんばろう!

編集:jQueryでは、ページ上の数字をインクリメントするだけで、次のように簡単に実行できます。 http://jsfiddle.net/puVPc/

28

サーバーコードとクライアントコードを混同していると思います。

JavaScriptは、サーバー(Webページなど)からデータを受信した後、クライアント上で実行されます。

PHPは、データを送信する前にサーバーで実行されます。

したがって、phpを使用してJavaScriptを操作するには2つの方法があります。

上記のように、phpでHTMLを生成するのと同じ方法で、phpでjavascriptを生成できます。

または、AJAX JavaScriptからのリクエストを使用してサーバーと対話できます。サーバーはデータで応答でき、JavaScriptはそれを受信して​​何かを実行できます。

基本に戻って、サーバーとクライアントの関係でHTTPがどのように機能するかを調べることをお勧めします。次に、サーバー側言語とクライアント側言語の概念を学習します。

次に、ajaxを使用したチュートリアルを行うと、概念の取得が開始されます。

幸運、グーグルはあなたの友達です。

5
Vigrond

単純に、JavaScript変数をエコーする必要があるため、質問が間違っているように思われました。

<?php
        $num = 1;
        echo $num;
        echo "<input type='button' value='Click' onclick='readmore()' />";
                echo "<script> function readmore() { document.write('";
        $num = 2;
        echo $num;
        echo "'); } </script>";
?>
2
MEX

pHPでスクリプトを使用します。

<?php

        $num = 1;
        echo $num;

    echo '<input type="button"
           name="lol" 
           value="Click to increment"
           onclick="Inc()" />
    <br>
    <script>
        function Inc()
        {';
            $num = 2;
            echo $num;

        echo '}
    </script>';
?>
2
dunno

上記のコードで

php値をjavascript変数に割り当てます。

<html>
<?php
 $num = 1;
 echo $num;
?>
  <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()">
  <br>
  <script>
   var numeric = <?php echo $num; ?>"; //assigns value of the $num to javascript var             numeric 
  function Inc()
   {
     numeric = eVal(numeric) + 1;
     alert("Increamented value: "+numeric);
   }
  </script>
</html>

PHPとJavsacriptを組み合わせたものの1つは、javascript値をPHP値に割り当てられないことです。あなたはPHP javascript変数の値。

1
Vid

PHPをクライアント側のjavascriptで実行する方法があります(ここではサーバー側のjsについては説明しません)。これが非常に良いアイデアかどうかはわかりませんが、できます。一部の人々が指摘したように、PHPはサーバーで評価され、静的なものとしてブラウザに返され、サーバーから追加されたデータでjavascriptが実行されることに留意する必要があります。

サーバーにjsファイルをphpファイルとして評価するように指示する必要があります。Apacheサーバーを実行している場合は、次のようなhtaccessファイルでこれを行うことができます。

<FilesMatch "\.js$">
SetHandler application/x-httpd-php
Header set Content-type "application/javascript"
</FilesMatch>

詳細はこちら:

js/cssをPHP htaccessを使用したファイル

http://css-tricks.com/snippets/htaccess/use-php-inside-javascript/

編集:httpページのリクエストで、このトリックにより、js拡張子を持つファイルがphpコンパイラによって解析されます。 jsファイル内のすべてのphpパーツが実行され、サーバーデータが追加されたjsファイルがブラウザに渡されます。

ただし、OPはhtml形式のファイル(おそらくphp拡張)を使用し、jsファイルは使用しないため、この特定のケースでは、私の提案は必要ありません。

推奨されるjsの解決策がその方法です。変数をサーバーに保存する必要がある場合は、ajaxを使用して変数を送信します。

1
metatron

これを試してみてください。

<html>
   <?php $num = 1; ?>
   <div id="Count"><?php echo $num; ?></div>
   <input type = "button" name = "lol" value = "Click to increment" onclick = "Inc()">
   <br>
   <script>
   function Inc() {
       i = parseInt(document.getElementById('Count').innerHTML);
       document.getElementById('Count').innerHTML = i+1;
   }
   </script>
</html>
0
Jagadeesan

いくつかのコメントにもかかわらず、場合によってはJavascriptでPHP関数にアクセスする必要があります(例:AJAXケース)。

これらの場合、mwsXライブラリを使用して、JavaScriptでPHP関数を使用できます。

mwsXライブラリ: https://github.com/loureirorg/mwsx

0
Daniel Loureiro