5

それで、特定の変数に情報を投稿する単純なphpフォームがある場合、投稿された変数をjavascriptに渡し、データを操作できるようにするにはどうすればよいでしょうか? 私が見つけた唯一の方法は、php でインライン javascript を使用することですが、変数がソース コードにそれほど露骨に表示されず、外部で処理される場合は、よりクリーンでエレガントな方法が必要だと感じています..これが私が今遊んでいるものです:

<form action="index2.php" method="post">
    <input name="sugar" class="form" type="text" value="" />
    <input name="fat" class="form" type="text" value="" />
    <input name="protein" class="form" type="text" value="" />
    <input type="submit" value="submit" />
</form>

これに続いて:

<?php 
$sugar = $_POST['sugar'];
$fat = $_POST['fat'];
$protein = $_POST['protein'];
?>

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        var sugar = "<?php echo $sugar ?>";
        var fat = "<?php echo $fat ?>";
        var protein = "<?php echo $protein ?>";
    </script>
    <script src="test.js" type="text/javascript"></script>
</head>

私が従うことができる代替案について誰か提案がありますか? 私は長い間 JavaScript を使用していないので、このような状況に対処する際のオプションを知っておくとよいでしょう。

4

6 に答える 6

8

これを行う最も簡単な方法は、送信したすべてのデータを含む Javascript オブジェクトを送信することです。これは、JSON エンコーディングによって簡単に実現できます$_POST

var data = <?php echo json_encode($_POST) ?>;

たとえば、 POST リクエストで値data.fatを送信した場合にアクセスできます。fat

于 2012-08-03T15:50:22.390 に答える
2

これらの変数をJavaScriptに取り込む場合は、これらの変数を印刷してどこかに表示する必要があります。

それらをJSONでエンコードし、ローカルのJavaScript変数に保存されるように印刷することは、私がいつも使用しているものです。

<?php
    function passToJavascript($variableName, $variable){
        if($variable = json_encode($variable))
            echo '<script>var '. $variableName .' = '. $variable .';</script>';
    }

    $foo = array(
        'bar1' => 1,
        'bar2' => 2,
        'bar3' => 3
    );

    passToJavascript('foo', $foo);
?>

HTMLで印刷されます:

<script>var foo = {"bar1":1,"bar2":2,"bar3":3};</script>

そうすれば、文字列、数値、配列、さらには「連想配列」など、必要な変数を渡すことができます。

于 2012-08-03T16:21:26.383 に答える
2

_GET も使用せず、変数を URL に保存することで、現在の要件に最適なソリューションを得ることができます。

于 2012-08-03T15:46:04.613 に答える
1

PHP変数をjavascript変数に渡す最良の方法は、最初にjson_encodeすることだと思います。PHP配列をJavaScriptに渡す場合、単純に言うことはできません

var1 = <?php echo $var1; ?>

次のようにする必要があります。

<?php
    $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
?>

<script type="text/javascript">
    var arr = "<?php echo json_encode($arr) ?>";
</script>
于 2012-08-03T15:50:16.447 に答える
1

vars を入力に書き込んでから、javascript でこれらの入力に到達することができます

<html>
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
        <script type="text/javascript">
            //You already linked jquery so I use it, you could do without if necessary.
            $(document).ready(function(){
                var sugar = $('#sugar').val();
                var fat = $('#fat').val();
                var protein = $('#protein').val()
            });
        </script>
            var sugar = "<?php echo $sugar ?>";
            var fat = "<?php echo $fat ?>";
            var protein = "<?php echo $protein ?>";
        </script>
        <script src="test.js" type="text/javascript"></script>
    </head>
    <body>
        <input type="hidden" id="sugar" value="<?php echo $sugar ?>" />
        <input type="hidden" id="fat" value="<?php echo $fat?>" />
        <input type="hidden" id="protein" value="<?php echo $protein?>" />
    </body>
</html>

そうすれば、JavaScript をすべて静的ファイルに置くことができます。

于 2012-08-03T15:50:52.263 に答える
0

POST の代わりに GET を使用して変数を送信してみると、次のように JavaScript から直接アクセスできます: http://javascript.about.com/library/blqs1.htm

私の知る限り、javascript から POST 変数にアクセスする方法はありません。あなたがやっているようなものを使わなければならないでしょう

于 2012-08-03T15:49:55.530 に答える