通过href链接进行POST

时间:2013-12-30 16:31:46

标签: javascript php

我正在尝试通过href链接发布帖子。我正在使用包含这些链接的下拉菜单。问题是,无论何时点击,我都会得到与第一个相同的结果。我希望每个链接都发布到从具有该id的查询获得的结果,而不是第一个。

<li>
  <?php  $rows=query("SELECT * FROM filmi") ?>
    <?php foreach($rows as $r):?>
      <form name="myform" method="post" action="description.php">
        <input type="hidden" name="id" value="
        <?=$r["id"]?>"/>
      </form>   
      <a href="description.php" onclick="document.forms['myform'].submit(); return false;">
        <?=$r["titulli"]?>
      </a>
  <?php endforeach?>    
</li>

4 个答案:

答案 0 :(得分:0)

每次运行Foreach循环时都会打开一个新表单。您还为每个交互使用相同的输入字段名称。

试试这个:

<li>
    <?php  $rows=query("SELECT * FROM filmi") ?>
     // Your form is opened and closed outside of the Foreach() loop.
     // This means all of your hidden fields will print within the same form.
     <form name="myform" method="post" action="description.php">
     <?php foreach($rows as $r):?>
           //  If you're expecting more than one id, you'll need to 
           //  post your form using array syntax.  Each "id" will be posted
           //  to PHP in incremented fashion.
           <input type="hidden" name="id[]" value="<?=$r["id"]?>"/>                                           

      <a href="description.php" onclick="document.forms['myform'].submit(); return false;">   
    <?=$r["titulli"]?></a>                                          
    <?php endforeach?>  
        </form> 
    </li>

答案 1 :(得分:0)

  

我得到与第一个相同的结果

那是因为你有多个同名的表格。因此,您对document.forms['myform']的JavaScript引用始终会以该名称找到第一个。

尝试使名称更具动态性。在foreach循环中,将一些唯一的记录值(记录的ID应该很好地)添加到name="myform",然后添加到该元素的JavaScript引用。这应该使表单名称唯一,并允许JavaScript引用您想要的特定表单。

答案 2 :(得分:0)

appen因为你的所有表单都有相同的名称,因为你需要做你想要的表格(标签名称)动态。像这样的名字:

<?php $i = 0;?>
<?php foreach($rows as $r):?>
    <form name="myform<?php print $i;?>" method="post" action="description.php">
       <input type="hidden" name="id" value="<?=$r["id"]?>"/>                                           
    </form> 
    <a href="description.php" onclick="document.forms['myform<?php print $i;?>'].submit(); 
return false;">
<?php $i++;?>

答案 3 :(得分:0)

document.forms['myform'].submit()将提交名为&#34; myform&#34;的表单。您正在以该名称创建$rows表单,因此只会发送第一个表单。

我建议以不同的方式命名每个人:(查看表单名称和onclick事件)

<li>
  <?php  $rows=query("SELECT * FROM filmi") ?>
    <?php foreach($rows as $r):?>
      <form name="myform<?=$r["id"]?>" method="post" action="description.php">
        <input type="hidden" name="id" value="<?=$r["id"]?>" />
      </form><a href="description.php" onclick="document.forms['myform<?=$r["id"]?>'].submit(); return false;">
        <?=$r["titulli"]?>
      </a>
  <?php endforeach?>    
</li>

或者,如果他们总是一个接一个,只需发布​​上一个兄弟。

<li>
  <?php  $rows=query("SELECT * FROM filmi") ?>
    <?php foreach($rows as $r):?>
      <form method="post" action="description.php">
        <input type="hidden" name="id" value="<?=$r["id"]?>" />
      </form><a href="description.php" onclick="this.previousSibling.submit(); return false;">
        <?=$r["titulli"]?>
      </a>
  <?php endforeach?>    
</li>