2012-03-10 179 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,價格非常合理。

這不值得。