1

「新しいメッセージ」ボタンをクリックすると開くメッセージングシステムを作成しようとしています。HTML、PHP、および JavaScript を使用しています。

テキストエリアを追加するコンテナを設定したボタンがあります。私はjavascript DOMでこれをやっています。この部分は問題ありませんが、javascript 内で PHP を取得しようとしています。

それでは、変数があるとしましょう:

<?php $my_name = "Eric" ?>

これをJavaScriptで呼び出すことはできますか?そうでない場合、これにアプローチする他の方法はありますか?

ここに私の完全なコードがあります:

HTML:

<html>
<head>
    <link type="text/css" rel="stylesheet" href="message.css"/>
    <script type="text/javascript" src="js/message.js"></script>
</head>

<body>
    <div id="container"></div>

    <button id="new_message" onclick="createMessage()">New Message</button> 
</body>
</html>

CSS:

#container {
    position: absolute;
    height: 443px;
    width: 743px;
    border: 1px solid black;
    border-radius: 0 0 20px 0;
    margin-top: 100px;
}

Javascript:

function createMessage() {
    var form = document.createElement("form");
    form.name = "form_input";
    form.method = "POST";
    form.action = "messages.php";
    container.appendChild(form);

    var textarea = document.createElement("textarea");
    textarea.name = "message_input";
    textarea.cols = 84; 
    textarea.rows = 16; 
    textarea.id = "message_input"; 
    container.appendChild(textarea);
};

メッセージボタンをクリックすると、ポップアップボックスが表示され、その中にphpが表示されます。

これは私がjavascriptで行っている方法で行うことができますか、それとも何か他のものを使用する必要がありますか?

ご協力いただきありがとうございます!

4

4 に答える 4

1

これを考える最善の方法は、ページで使用されているさまざまなスクリプト言語の実行順序に戻ることです。その実行順序は次のようなものです。

(1) サーバー上で PHP が実行されます。ユーザーのブラウザーへの応答として送信される HTML や Javascript や CSS の束を吐き出します。

(2) ユーザーのブラウザが応答を受け取り、HTML をレンダリングし、Javascript を実行します。

実際には、これはJavascriptをPHPに依存させることはできますが、その逆はできないことを意味します。

あなたの質問から、常に PHP を実行し、ユーザーがボタンをクリックしたときに結果を表示するだけで問題ないようです。したがって、PHP に次のような Javascript を吐き出させます。

<script type="text/javascript">
    var myName = '<?php echo addslashes($my_name)?>';
</script>

[注: 追加の、または別のサニタイズを行うことができます。]

于 2013-09-04T22:45:36.203 に答える
0

あなたの本当の質問は、「PHPでデータを取得し、そのデータのコピーをJavascriptで使用できるようにする方法」だと思います。

主に次の 2 つの方法があります。

  1. Javascript がトリガーされたときに、AJAX 呼び出しを介してサーバーから情報を取得しようとします。これは別の PHP スクリプトになり、JS は、必要なものを把握するのに役立つ何らかの ID またはその他の情報を渡す必要があります。
    • 別の PHP スクリプトと追加の配管が必要です。
    • データ量が多い場合に最適
    • これらのボタンがたくさんあり、ユーザーがそれらの多くを使用しない場合に適しています
    • 後でもっと凝ったものの基礎を形成する
  2. 情報を HTML に埋め込み、Javascript に読み取らせます。
    • より簡単に
    • ページが大きい
    • たくさんやり始めると問題になるかもしれません
    • ID などを渡すために、AJAX に慣れた後でも、おそらくこれを少し行う必要があります。

感覚をつかむために、とりあえず「手早く汚い」方法を試してみることをお勧めします。たとえば、PHP ページでは次のようになります。

<?php
/* ... */
$defaultMessage = "Hello world! Watch me contain single quotes (') and double quotes(\") and other things!";
/* ... */
?>
<button id="new_message" onclick="createMessage(<?= htmlentities(json_encode($defaultMessage))?>">New Message</button>

エスケープについて 100% 確信があるわけではありませんが、データ内で一重引用符と二重引用符を使用してテストし、問題がないことを確認してください。また、HTML が壊れないように 1 つの方法でエスケープし、壊れないように別の方法でエスケープする必要があることを覚えておいてください。ジャバスクリプト。次に、JS ファイルで次のようにします。

function createMessage(defaultMessage) {
    // ...
    textarea.value = defaultMessage;
    // ...
}

このようにして、PHP からのデータを HTML 出力に入れ、その後 (PHP スクリプトの実行が停止した後)、ユーザーのブラウザーは HTML を取得し、必要な目的のためにそのデータを引き出すことができます。

于 2013-09-04T22:48:49.240 に答える
0

PHP はサーバー側で実行され、javascript はクライアント側で実行されます。javascript と php の間で変数やその他のデータを渡すには、ajax リクエストを介してサーバーを呼び出すか、(静的データの場合) データをページ ソースに入れて JavaScript で処理する必要があります。とにかく、サーバー側でデータを変換して処理できるようにする必要があります。たとえば、次のような内容を含む interface.php ファイルを作成します。

<?php
  $mydata = array("username"=>"john");
  echo "window.serverdata=".json_encode($mydata).";";
?>

そして、それをあなたのページに含めます:

<script type="text/javascript" src="interface.php"></script>
...
<script type="text/javascript">
  alert(serverdata.username);
</script>

数秒ごとにページをリロードしたくないため、ajax リクエストがデファクト スタンダードであることに注意してください。上記の方法は、静的データを交換する場合に役立ちます。

于 2013-09-04T22:55:16.093 に答える
0

ボタンを介して変数をJavaScriptに渡すことは理にかなっています。例えば。

<button id="new_message" onclick="createMessage('<?php echo $my_name;?>')">New Message</button>
于 2013-09-04T22:43:12.820 に答える