【问题标题】:Send POST data along when link is clicked without using forms?在不使用表单的情况下单击链接时发送 POST 数据?
【发布时间】:2012-03-27 11:30:13
【问题描述】:

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

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

其中一些数据真的很长,而我的蹩脚网络主机对可以在 url 中传递的 GET 数据的大小限制非常小。有没有办法使用 POST 数据而不使用 html 表单来做到这一点?

【问题讨论】:

  • 我认为是时候寻找新的虚拟主机了。你也为此付费
  • 同意,他们很糟糕。不幸的是,要收回我的钱为时已晚。但如果可以避免,请不要使用 inMotion。
  • 这太荒谬了。您是否能够使用该虚拟主机正确上传文件?
  • 我没试过,我不使用任何 mutlipart/form-data 表单...

标签: php javascript post hyperlink get


【解决方案1】:

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

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

    【讨论】:

    • 我不能使用这样的解决方案的原因是因为我的所有链接都已经在现有表单中,并且 1)我不希望在单击链接时提交该表单, 2 ) 我添加的任何隐藏字段都属于我不想添加的表单。否则,这是一个很好的解决方案。
    【解决方案3】:

    你也可以使用XMLHttpRequest

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

    【讨论】:

      【解决方案4】:

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

      不值得。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-23
        • 2015-09-29
        • 2021-12-10
        • 2016-01-24
        • 1970-01-01
        • 2015-07-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多