-1

ブロックのリストを含むJavascriptの配列があります。この配列は彼の長さを変えるかもしれません。データベースでいくつかの操作を行う必要があるため、PHP からアクセスする必要があります。問題は、この配列の長さが変わる可能性があることです。これはコードです:

<html>
<head>
</head>
<body>
<script type='text/javascript'>
  var blocks = [
    { w: 500, h: 600 },
    { w: 300, h: 200 },
    { w: 150, h: 150 },
    { w: 150, h: 150 },
    { w: 200, h: 250 },
    { w: 100, h: 250 }
  ];

  order_blocks(blocks); //blocks are ordered and can be added new blocks

  //Next code is only to test
  for(var n = 0 ; n < blocks.length ; n++) {
    var block = blocks[n];
    if (block.fit) {
        var str1 = "Block " + (n+1) + ": (" + block.w + "," + block.h + ")";
        document.write(str1);
    }
  }
</script>
<?php
    if (!isset($_POST[numblocks]))
    {
        echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass>
                    <input type=hidden name=numblocks>
                    <input type=hidden name=block1_w>
                    <input type=hidden name=block1_h>
            </form>';
        echo '<script languaje="JavaScript">
                    document.pass.numblocks.value=blocks.length;
                    document.pass.block1_w.value=blocks[0].w;
                    document.pass.block1_h.value=blocks[0].h;
                    document.pass.submit();
            </script>';   
    }     
    echo '<br><br>There are '.$_POST["numblocks"].' Blocks<br>';
    echo 'Block 1 ('.$_POST["block1_w"].','.$_POST["block1_h"].')<br>';
?>
</body>
</html>

プロセスは次のとおりです。

  1. Javascript: 配列ブロックを作成し、order_blocks を適用します。
  2. PHP: POST メソッドで Javascript 変数を渡します。

コードでは、配列の最初の要素を正しく渡していますが、配列を反復処理する必要があります。

4

1 に答える 1

0

これを置き換えます:

echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass>
                <input type=hidden name=numblocks>
                <input type=hidden name=block1_w>
                <input type=hidden name=block1_h>
        </form>';
echo '<script languaje="JavaScript">
                document.pass.numblocks.value=blocks.length;
                document.pass.block1_w.value=blocks[0].w;
                document.pass.block1_h.value=blocks[0].h;
                document.pass.submit();
        </script>';   

これで(動作するはずです):

echo '<form action="'.$_SERVER[PHP_SELF].'" method=post name=pass>
                <input type=hidden name="numblocks">
                <input type=hidden name="block1_w[]">
                <input type=hidden name="block1_h[]">
        </form>';
echo '<script language="text/javascript">
            for(var i = 0; i < blocks.length; i++) {
                document.pass.numblocks.value=blocks.length;
                document.pass.block1_w[i].value=blocks[i].w;
                document.pass.block1_h[i].value=blocks[i].h;

            }
        </script>';   
于 2013-09-26T08:38:55.823 に答える