在php中POST数组数据

时间:2016-06-04 11:09:14

标签: php post

我正在尝试将数组数据发布到另一个php,但它不起作用..

这是我的代码。

  

在func.php中

function search($x, $y)
{

  ...

  $martx = array();
  $marty = array();


  foreach($load_string->channel as $channel) {
    foreach($channel->item as $item) {
      array_push($martx, $item->mapx);
      array_push($marty, $item->mapy);

    }
  }

    echo"<form method=post action='map.php'>";
    for($i = 0; $i < 8; $i++)
    {
      //echo $martx[$i]."<br/>";
      //echo $marty[$i]."<br/>";
      echo "<input type='hidden' name='martx[]' value='".$martx[$i]."'>";
      echo "<input type='hidden' name='marty[]' value='".$marty[$i]."'>";
    }
    echo "</form>";

    header("location: map.php?x=$x&y=$y");
}

martxmarty包含来自已解析的xml $load_string的数据

我想通过POST将这些数据发布到map.php。所以,我希望我可以在martx中使用两个数组martymap.php,例如$_POST[martx][0] ..

但是当我运行此代码时,页面仍保留在func.php中,而不是重定向到map.php

我犯了一些错误吗?

提前致谢。

=============================================== =========================

感谢大家的关心和有用的建议!

我根据你的建议编辑我的代码,

  1. 我使用javascript删除所有回声

  2. 我添加了提交代码

  3. 这是我的代码

    ....
    
    $martx = array();
    $marty = array();
    
    foreach($load_string->channel as $channel) {
    foreach($channel->item as $item) {
      array_push($martx, $item->mapx);
      array_push($marty, $item->mapy);
    
      }
    }
    
    ?>
    <form method='post' action='map.php?x=<?=$x?>&y=<?=$y?>' id='market'>
      <script language="javascript">
        for(i = 0; i < 8; i++)
        {
          document.write('<input type="hidden" name="martx[]" value="<?=$martx[i]?>">');
          document.write('<input type="hidden" name="marty[]" value="<?=$marty[i]?>">');
        }
        document.getElementById('market').submit();
        </script>
    </form>
    <?php
    //header("location: map.php?x=$x&y=$y");
    

    }

    使用此代码,页面成功重定向到map.php

    但我无法在$_POST['martx'][i]

    中获取map.php等数据

    我认为document.write行原因问题

    当我编写像

    这样的代码时
    document.write('<input type="hidden" name="martx[]" value="$martx[i]">');
    

    $_POST['martx'][i]的结果是“$ martx [i]”

    此代码中是否有错误?

    我想使用POST方法,但如果我不能用POST发布数据,

    然后我将使用session-method作为@Amit Ray和@weigreen建议。

    再次感谢您的关注。

2 个答案:

答案 0 :(得分:0)

首先,您尝试将header('location: xxx')用于重定向用户到另一个页面。

结果,您没有提交表单,因此您无法获得$_POST[martx][0]之类的数据。

也许你应该尝试使用session。

答案 1 :(得分:0)

我在您进行标题重定向时可以看到一些错误。在调用头重定向之前应该没有输出,但是在重定向之前你正在做回声。 使用会话来解决这个问题

function search($x, $y)
{

  ...

  $martx = array();
  $marty = array();


  foreach($load_string->channel as $channel) {
    foreach($channel->item as $item) {
      array_push($martx, $item->mapx);
      array_push($marty, $item->mapy);

    }
  }

 if (session_status() == PHP_SESSION_NONE) {
    session_start();
 }
 $_SESSION["martx"] = $martx;
 $_SESSION["marty"] = $marty;
 header("location: map.php"); exit;

然后在map.php中,您可以检索会话变量

if (session_status() == PHP_SESSION_NONE) {
        session_start();
 }
$martx = $_SESSION["martx"];
$marty = $_SESSION["marty"];

然后你可以使用for循环或foreach循环遍历值