2011-12-12 14 views
17
<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> 

をPHPを使用することができますこれは私がこれまで持っているものである、しかし動作していない、私はアヤックスか何かを使用する必要がありますが、私は何をすべきか見当がつかないと思います。がどのようにjavascript関数で

おかげ

+1

簡単に言えば、あなたはjavascript関数でPHPを使用することはできません。しかし、PHP – konsolenfreddy

答えて

22

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

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

サーバーはこれにそれを評価しますので:

alert("Hello"); 

しかし、あなたはそれをPHPで任意の操作を実行することはできません。

この:あなたはPHPスクリプトを呼び出すためにwan't場合は、あなたが返す別のページを呼び出す必要があります

function Inc() 
{ 
    2 
} 

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

は、単にこれに評価されていますパラメータのセットからの値。

これ

は、例えば、動作します:

script.php(別のページ上)

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

のJavascript(jQueryの):これは警告する必要があります

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

幸運を祈る!

編集:ちょうどページに番号をインクリメントは、このようにjQueryで容易に行うことができる:http://jsfiddle.net/puVPc/

1

を上記コード

のJavaScript変数にPHPの値を割り当てます。

PHPとJavsacriptの組み合わせでは、JavaScript値をPHP値に割り当てることはできません。あなたはjavascript変数にPHPの値を割り当てることができます。

+0

'eval(数値)'でJavaScriptコードを生成することはできますか?私はそこに属しているとは思わない。 '数値++ 'で十分です。 – Dan

0

これが動作して試してみてください。..

<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> 
5

は、私はあなたのクライアントコードとサーバーコードが混乱していると思います。

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

PHPはデータを送信する前にサーバ上で動作します。

JavaScriptを使ってPHPとやり取りする方法は2通りあります。

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

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

サーバーとクライアントの関係でHTTPがどのように機能するかを勉強することをお勧めします。次に、サーバー側言語とクライアント側言語の概念を研究します。

その後、ajaxを使ってチュートリアルを受けてください。これでコンセプトが始まります。

幸運にも、googleはあなたの友人です。

0

いくつかのコメントがありましたが、場合によっては、JavaScript関数(例:AJAXの場合)にアクセスすることが本当に必要です。

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

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

1

(ここでは、サーバー側のjsの話ではない)クライアント側でJavaScriptをPHPを実行する方法があります。これは非常に良いアイデアかどうかは分かりませんが、できます。 PHPがサーバー上で評価された後、静的なものとしてブラウザに返され、サーバーから追加されたデータとともにJavaScriptを実行することを覚えている人もいます。

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

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

詳細情報:

Parse js/css as a PHP file using htaccess

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

編集:HTTPページ要求では、このトリックはJS extensioを持つファイルを作りますnはPHPコンパイラによって解析されます。 jsファイルのすべてのPHPパーツが実行され、追加されたサーバーデータを含むjsファイルがブラウザに渡されます。

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

提案されているjsソリューションは、方法です。変数をサーバーに格納する必要がある場合は、ajaxを使用して変数を送信します。単に

あなたがPHPでスクリプトを使用
2

..

<?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>'; 
?> 
+0

それは私のコードで動作しますが、私はそのエレガントだとは思わない。 – Julian

2

JavaScriptの変数をエコーする必要があるため、あなたの質問が間違っ聞こえました。

-2

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

は、単純にそれを返す:

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