2012-03-05 5 views
1

ユーザーが複数のプランを含むPHPアプリケーションを操作しています。 「プランの管理」ページでは、メニューからプランを選択するたびにデータベース値に基づいてプラン料金を計算してユーザーに表示するajaxコールが送信されます。それはうまく動作します。私の唯一の問題は、Javascriptが無効になっているときにすべてがうんざりになるということです。計画料金は表示されません(明白です)。ユーザーが[送信]ボタンをクリックすると、計画が変更されます(理想的にはユーザーはチェックアウトページに移動する必要があります)JavaScriptが有効になっているときに<noscript>タグ内のすべてが無視されないのはなぜですか?

とにかく、ページの上部。

<noscript> 
Javascript is disabled. Please enable it to continue. 
<?php exit(); ?> 
</noscript> 

JavaScriptが無効になっていると、メッセージが表示され、すぐに停止します。しかし、Javascriptを有効にすると、<noscript>タグのPHPコードも実行され、ページの実行が停止されます。

Javascriptを有効にすると、タグ内のすべてが無視されないのはなぜですか?

+8

気を悪くしないでください。あなたはPHPとJavaScriptの仕組みを混乱させる15億人に似ているので、あなたは良い会社です。 –

+2

ブラウザを開きます。ソースを表示します。 – TRiG

+0

Phew !!私は、JavaScriptコードがなくても動作するPHPコードのフォーマットを改善する必要があると考えています。 – skos

答えて

7

PHPは、クライアントではなくサーバー上でレンダリングされます。 <noscript>はブラウザによってのみ無視されます。サーバーは、クライアントがこのタグを使って何を行うかについて全く知らない。 PHPを含むHTMLコメントでもページによって実行されます。

2

PHPはクライアント側ではなくサーバー側で実行されます。 JavaScriptはクライアント側で実行されるため、サーバーはJavaScriptについて何も知らない。

3

ページはサーバー側で最初に生成され、次に2番目の場所でブラウザに送信されるためです。 :)さらに、サーバは<noscript>タグについて知りません。

0

phpとjsのように文字列を設定することはできません。 PHPはあなたのサーバー上で動作し、jsはクライアントのブラウザ上で動作するため、常にexit()が呼び出されます。

0

noscript要素タグのみをサーバ側でブラウザのレンダリングエンジンとJavaScriptによると、ないPHPによって解釈される - だから何、ここで起こっていることは、サーバがクライアントに送信する前にPHPファイルを処理しているということです(サーバーは、この段階では、HTMLタグの意味を気にしません)exit()にヒットします。実行を停止します。

生成された内容は、ブラウザに送信され、それに従って表示されます。これはのnoscriptタグになります。「Javascriptが無効です。有効にしてください。」 PHPが作り出したものの終わりに当たる。

元の状況で何が起こっているのかわかりませんが、のnoscriptタグ内にPHPの配置と類似の混乱があるように見えます。元のスクリプトの例を投稿できますか?

0

PHPコードは、ページ内のどこにあっても常に(ほぼ)実行されます。 <script>タグはクライアント側のコードであり、PHPはサーバー側のコードなので、あなたの問題は単純ではありません。

サーバーサイドコードは、サーバーで実行されます。対照的に、クライアントサイドのコードはクライアントのマシンで実行されます。したがって、PHPは実際に<script>タグを認識していないか、またはクライアントがスクリプトをまったく実行できるかどうかを認識していません。 <?php ... ?>セクションに注目し、結果をクライアントに送信する前にそれらのセクションで動作します。

0

<?php exit(); ?>は、ページがユーザーに提供される前にサーバー側で実行されます。 PHPが<noscript>タグに含まれているかどうかは気にしないので、それ以上のアクションはすべて</noscript>タグの直前で停止します。

可能な解決策は、送信ボタンにdisabled="disabled"属性を追加し、Javascriptを使用してページの読み込み時に属性を削除することです。そうすれば、すべてのユーザーにフォーム全体が表示されますが、JavaScript以外のユーザーは実際にボタンをクリックすることはできません(<noscript>要素に通知することを忘れないでください)。

0

PHPはサーバー上で実行されるため、ブラウザでも<noscript>タグを見ている。Javascriptがクライアント側で、PHPはサーバー側である。回答されている理由

0

ザ・。

しかし、PHPファイルを呼び出すための解決策、私はこの記事を見つけました。

依存します私のために働いた。

<noscript><iframe src="your_php_file.php"></iframe></noscript> 

リンク:including php in <noscript> tag

関連する問題