在不使用表单的情况下单击链接时发送POST数据?

时间:2012-03-10 03:58:38

标签: php javascript post hyperlink get

我的页面上有一些常规的锚标记链接,打开一个弹出窗口,显示我通过网址传递的任何GET数据:

<a href="javascript:window.open('view.php?data=a%20bunch%20of%20data');">View</a>

这些数据中的一些确实很长,而我糟糕的网络主机对可以在网址中传递的GET数据的大小有一个非常小的限制。有没有办法用POST数据代替,而不使用html表单?

4 个答案:

答案 0 :(得分:8)

您需要使用表单。但是,您可以将超链接嵌套在表单中:

<form method="post" action="somepage.php" id="form1">
<input type="hidden" name="field1" value="foo" />
<input type="hidden" name="field2" value="bar" />
<a href="somepage.php?field1=foo&field2=bar" onclick="document.getElementById('form1').submit(); return false;">Hyperlink</a>
</form>

答案 1 :(得分:2)

我遇到了同样的困境,并在jQuery中提出了这个解决方案:

<a href="#" id="post-link">Example</a>

<script type="text/javascript">
     $(document).ready(function () { 
          $('a#post-link').click(function() {
               $('body').append($('<form/>', {
                    id: 'form',
                    method: 'POST',
                    action: '#'
               }));

               $('#form').append($('<input/>', {
                    type: 'hidden',
                    name: 'field1',
                    value: 'foo'
               }));

               $('#form').append($('<input/>', {
                    type: 'hidden',
                    name: 'field2',
                    value: 'bar'
               }));

               $('#form').submit();

               return false;
          });
     } );
</script>

答案 2 :(得分:1)

你也可以使用XMLHttpRequest

http://www.w3schools.com/xml/xml_http.asp

答案 3 :(得分:1)

我在Web开发的长期经验中学到了一件事:如果您遇到托管限制,请将您的网站托管在其他地方。主持限制 - 无论它们是什么 - 从长远来看都不会让你走得太远。托管很便宜,现在可以以非常合理的价格获得具有丰富资源的VPS。

这不值得。