2012-01-06 37 views
1

ボタンをクリックして別の.phpファイル内の関数を呼び出そうとしていますが、インターネット上の他の場所でこのメソッドが発生しました。できます。私が間違って何が起こっているかを証明するために、単純に二回、画面上に何かを印刷する代わりに、別のファイルを呼び出すためにPHPコードを削減:HTMLにPHPを挿入するとコメントアウトされたコードが返される

<?php 
echo "hello"; 
?> 
<?php 
echo <<<END 
<html> 
<body> 
<button type="button" onclick="handleButton()" id="button1">PHP Test</button> 
<script type="text/javascript"> 
function handleButton() 
{ 
    document.getElementById("button1").innerHTML = "PHP Test<?php echo 'HELLO';?>"; 
} 
</script> 
</body> 
</html> 
END; 
?> 

は、画面上のボタンの印刷「HELLO」を押すべきではないでしょうか。代わりに、ボタンのHTMLソースは次のようになります。

<button type="button" onclick="handleButton()" 
id="button1"> 
PHP Test 
<!--?php echo HELLO;?--> 
</button> 

ボタンをクリックすると何も起こりません。 "hello"は正常に出力されるので、サーバは2番目のphp echoコマンドをコメントアウトしているのはなぜですか?

P .:私は、「なぜこれを最初にやろうとしているのですか?」という多くのコメントを期待しています。私は、私は、HTMLファイルのフォームには、PHPファイルに提出することができます知っているが、ここで私の目標は、それぞれ異なるPHPファイルにつながる複数のボタンを画面にすることです。私はまた、この画面上のどのボタンが押されたのかを調べ、適切なPHPファイルを呼び出す単一のPHPファイルにフォームリードすることもできることを知っていますが、そうするために別のPHPファイルを作成しないようにしたいこれは機能します。だから私がより効率的なアプローチを欠いていない限り、私は、なぜサーバがそのPHPコードをコメントしているのかという主題に固執することを好むでしょう。ありがとう。

+0

(これはテストされ、機能している)...以前宣言された変数を使用したほうが良いと思います。 redmoon7777

+1

そうでもない:-)一重引用符は役に立ちません。ボタンは "<! - ?php echo 'HELLO';? - >"を追加します。 – user1134918

+0

あなたが上に投稿したスニペットには、あなたが達成しようとしていることが完全にはわからないほど多くの間違ったものがあります。文字列を正しく引用することから始めましょう。 HTML/JSとPHPがどのようにクライアント側(ブラウザ)で動作するのか、そしてサーバ側(PHP)で動作するのかについて理解していますか?あなたがしていると私には思われません。 –

答えて

2

PHPはサーバー側の言語であり、ユーザーがデータを取得する前に実行されます。つまり、できません JavaScriptからPHP関数を呼び出します。これを行うには、AJAXリクエストをPHPページに作成し、そこに結果を戻す必要があります。また、必ずHelloを引用符で囲んでください。私はPHPとJavaScriptでsome tutorialsを検索することをお勧めします。そのため、2つの間のやりとりのハングアップを得ることができます。

+0

あなたは本当にスーパーですか? JavaScriptが実行される前にPHPが実行されている場合、なぜ「helloHELLO」が画面に表示されないのですか?代わりに、私はページソースにPHPがあるとコメントしました。 – user1134918

+2

あなたはPHP文字列の中にPHPを持っています - それは決して実行されません – SergeS

+1

@SergeSは正しいです。コードを実行せずにそのまま出力されることを意味するエコーのPHPを持っています – Ktash

0

サイドノートでは、文字列を引用符で囲む必要があります。

<?php echo "hello"; ?> 
+0

はい、どうぞ、私たちを燃やしてください。引用してください。 –

+0

私はそれがおそらくより正しいことを知っていますが、私は余分な変数が式に入ってしまうのを避けようとしていました。JSコマンドの文字列に二重引用符を使用するには、それらをエスケープする必要があります.PHPを実行する上で考えられる問題として、それを排除したかったのです。それ以外に、 "echo hello;" "echo" hello ";"と同様に動作します。 – user1134918

+1

「もっと正しい」わけではありません。それは正しかった。 PHP言語の文法は、意見の問題ではありません;-) –

-1

HTMLのBeacuseは、それが(PHP)どこから来るかについての感覚を持っていない - この値は静的であれば - そこにそれを置くとcleint側からそれを実行すると邪魔しないで、いかなる形式でもAJAXを使用する - にそれはウェブが働くんどのように学習最初のテイクビット鉱石で

PSグーグル見て学ぶ - 私はあなたがここで何をしようとして理解していれば、あなたは彼らに

+0

ありがとう、私はAJAXについて聞いたことがありますが、新しい言語/フレームワークに関わりたいとは思っていませんでした。私はそれをする前に、すべてのボタンを中央のPHPファイルにレポートすることにします。 – user1134918

0

を得る前に、それはこれと他の似問題をsloveます、してみてください以下:

<html> 
    <body> 
    <button type="button" onclick="handleButton()" id="button1">PHP Test</button> 
    <script type="text/javascript"> 
     function handleButton() 
     { 
     document.getElementById("button1").innerHTML = "PHP Test <?php echo 'HELLO';?>"; 
     } 
    </script> 
    </body> 
</html> 

上記のコードが "index.php"ファイルにあり、http://example.com/index.phpを使用してこのファイルを要求しているとします。このブラウザに送信され、次のHTMLをもたらすであろう(あなたがあなたのブラウザにロードされたページの「ソースの表示」を行うかどうかを確認できます):ボタン上の

<html> 
    <body> 
    <button type="button" onclick="handleButton()" id="button1">PHP Test</button> 
    <script type="text/javascript"> 
     function handleButton() 
     { 
     document.getElementById("button1").innerHTML = "PHP Test HELLO"; 
     } 
    </script> 
    </body> 
</html> 

クリックすると、PHPとは何の関係もありませんその時点で、PHPは既にページを読み込む際にその役割を完了しているからです。この時点で、サーバーサイドのPHPスクリプトをリクエストしたい場合は、フォーム、AJAXリクエスト、またはIFRAMEのいずれかを使用する必要があります(そして私はここに行くことができます)。

これは少しクリアしたいと思っていますが、ここでやろうとしていることをやろうとする前に、もう少し読むべきことを強調しなければなりません。

幸運を祈る!

+0

私は何をしようとしているのか理解していますが、私はちょうどそのことについて慣習的ではありません:-)私はおそらく私がP.S.質問に。 Fwiw、私もあなたのアプローチを試みました。それはうまくいくはずですが、ボタン名を "PHP Test?>"に変更し、ソースは2つのコメントアウトされた行を表示します:<! - ?php echo 'HELLO';? - >。 – user1134918

+0

あなたの補遺の編集を読んでください。 'ハロー <ボタンタイプ= "ボタン" のonclick = "handleButton()" ID = "button1を"> PHPテスト <スクリプトタイプ="テキスト/ javascriptの:実際には、ブラウザは、ソースとしてこれを受信します"> function handleButton() { document.getElementById(" button1 ")。innerHTML =" PHPテスト?><?php echo 'HELLO';?><?php "; } ' – user1134918

+0

申し訳ありませんが、そのフォーマットが最善ではない場合、私はここに新たなんです。とにかく、あなたが見ることができるように、PHPコードは実際にはサーバーによって実行されるのではなく、そのまま残っています。ボタンをクリックすると、ページソースに追加されます。 AFAIK、上記の私の元のコードが動作しない唯一の理由は、PHPタグの入れ子になっていない問題です。 – user1134918

-1

あなたが意味するか

<?php 
    $buttonTitle = "HELLO"; 
    echo 'hello'; 
?> 

<?php 
echo <<<END 
<html> 
<body> 
<button type="button" onclick="handleButton()" id="button1">PHP Test</button> 
<script type="text/javascript"> 
function handleButton() 
{ 
    document.getElementById("button1").innerHTML = "$buttonTitle"; 
} 
</script> 
</body> 
</html> 
END; 
?> 
+0

Webユーザに感謝します。残念ながら、ボタンをクリックしたときに実際のPHPコードを実行する必要があります。 PHPが関数呼び出しを変数に格納し、変数を評価することによって関数呼び出しを実行する能力を持たない限り、私はこの方法がうまくいかないと思います。 – user1134918

+0

あなたはこれを試すことができます... $ var = 'hello'; 関数hello(){return 'hello world'; }; echo $ var(); XMLHttpRequestを使用して、PHP関数の非同期呼び出しを行います。それは本質的に[Ajax](http://www.w3schools.com/ajax/ajax_example.asp)です。理にかなっていれば、Ajaxの機能性のためにすべてのフレンドリーなラッパーを持つ普及したJSフレームワークをチェックしてください。 –

関連する問題