2012-03-10 102 views
1

我有打开,显示任何GET数据我通过URL的弹出窗口我的网页上一些正规的锚标记链接:单击链接时不发送表单而发送POST数据?

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

这些数据中有些是很长的,和我的蹩脚的虚拟主机有可以在url中传递的GET数据的大小的一个非常小的限制。有没有办法做到这一点与POST数据,而不使用HTML表单?

+0

我认为该是找到新的虚拟主机的时候了。你也支付这个费用吗? – Blender 2012-03-10 04:01:19

+0

同意,他们是可怕的。不幸的是,拿回我的钱已经太迟了。但如果你能避免它,不要使用inMotion。 – Joey 2012-03-10 04:04:41

+0

这很荒谬。你能够使用该虚拟主机正确上传文件吗? – Blender 2012-03-10 04:06:10

回答

7

您需要使用表格。但是,你可以窝在一个表格超级链接:

<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> 
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> 
+0

我不能使用这样的解决方案的原因是因为我的所有链接已经在一个现有的形式,1)我当我点击链接时不希望提交该表单,以及2)我添加的任何隐藏字段将属于我不想添加到其中的表单。否则,这是一个不错的解决方案。 – Joey 2012-03-10 05:19:01

+0

创建一个临时表单并提交它是一个很好的解决方案 – jscripter 2015-06-16 20:55:05

1

有一件事我在我的Web开发的长期经验教训:如果你从你的主机,主机碰上限制你r网站在其他地方。围绕主机限制 - 无论它们是什么 - 从长远来看,不会让你走得太远。主机价格便宜,您可以通过慷慨的资源获得VPS,价格非常合理。

这不值得。