2012-12-11 127 views
2

我想知道哪个是映射<a href=...></a>执行HTTP GET执行HTTP POST的超链接的最佳方式(我想避免传递URL中的所有变量)?例如,下面的2 hrefs。此外,我还想摆脱submit按钮并使用常规<a href=...></a>超链接。有什么建议么?href超链接作为POST

<form action="test.php?action=update" method="post" id="cart"> 
    <table> 
    <tr> 
     <td> 
     <a href="test.php?action=delete&id=<?php echo $id ?>" class="r"> 
      remove 
     </a> 
     </td> 
     <td> 
     <a href="test.php?action=add&id=<?php echo $id ?>" class="r">add</a> 
     </td> 
    </tr> 
    <tr> 
    ... 
    </tr> 
    </table> 
    <div> <button type="submit">Update</button> </div> 
</form> 
+6

您不能在没有AJAX或表单的情况下提交POST。 – Jivings

+0

@Jivings,我不想摆脱'form',而是在URL中传递变量 – Tin

+0

您只需要用输入元素替换您的链接。 – Jivings

回答

0

您可以将输入标记隐藏在表单中,以将它们提交为POST。

<td><a href="test.php?action=delete&id=<?php echo $id;?>" class="r">remove</a></td> 
<td><a href="test.php?action=add&id=<?php echo $id;?>" class="r">add</a></td> 

重写上面使用两种形式,有<input type="hidden" name="id /> 和按钮<input type="button" name="delete" /> 等。

,如果你在你的动作脚本运行的print_r($ _ POST)。你会得到一个按钮列表和隐藏字段的值。现在,您可以为要执行的操作编写条件。我没有在这里写完整的代码,只是传递了这个想法。

编辑:看下面的例子。

 <form method="post" id="cart"> 
     <table> 
       <input type="hidden" name="id" value='some value' /> 
       <input type="submit" name="action" value="delete" /> 
       <input type="submit" name="action" value="add" /> 
      </tr> 
      <tr> 
       ... 
      </tr> 
     </table> 
     <div><button type="submit">Update</button></div> 
    </form> 


    <?php print_r($_POST); ?> 
+0

你有没有例子? – Tin

+0

查看我所做的更改。我没有给出完整的代码,只是你的作业。 – Lenin

+0

你甚至可以使用相同的形式运行这个,但是在动作脚本上有条件。 – Lenin

2

我建议使用jQuery.postclick。当用户点击该链接,通过一些数据提交这样

$('.r').on('click', function() { 
     $.post('test.php', {key:'value', key2:'value2'}, function(data) { 
      //error check here 
     }); 
    return false; 
}); 
+1

虽然这是正确的,但OP对于学习如何在开始使用jQuery和进行AJAX调用之前正确使用HTML表单更为重要。 – Jivings

+1

的确如此,但是为了将锚链接映射到发布请求,它不可避免地会在某个时候结束于ajax。 –

+0

没有锚。他们应该是形式元素。 – Jivings

0

据我知道你不能执行与链接任何POST请求。您可以使用链接和php进行GET请求,作为禁用JavaScript的用户的回退,并且对于已启用JavaScript的用户取消默认行为,并使用AJAX帮助您使用ajax POST请求。

例如:

<a class="submit" href="hallo.html?hello=world&test=yes">Test</a> 

和JS(我用的jQuery)将是:

$('.submit').click(function(){ 
    var urlPairs = this.href.split('?')[1].split('&'), 
     total = urlPairs.length, 
     current = [], 
     data = {}; 

    for(;total;) { 
     current = urlPairs[--total].split('='); 
     data[current[0]] = current[1]; 
    } 

    $.post('test.php', data); 

    return false; 
}); 

,你也可以写你的其他功能POST更多信息检查jQuery post function doc

PS我更喜欢,如果您使用FORM任何方式,为什么不使用提交按钮,是因为CSS样式?你可以像任何其他元素一样(在一些浏览器中进行一些调整)来设置它的样式。