我正在尝试将数组数据发布到另一个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");
}
martx
和marty
包含来自已解析的xml $load_string
的数据
我想通过POST将这些数据发布到map.php。所以,我希望我可以在martx
中使用两个数组marty
和map.php
,例如$_POST[martx][0]
..
但是当我运行此代码时,页面仍保留在func.php中,而不是重定向到map.php
我犯了一些错误吗?
提前致谢。
=============================================== =========================
感谢大家的关心和有用的建议!
我根据你的建议编辑我的代码,
我使用javascript删除所有回声
我添加了提交代码
这是我的代码
....
$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建议。
再次感谢您的关注。
答案 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循环遍历值