是否可以通过超链接使用POST方法传递值?

时间:2013-09-30 12:37:32

标签: javascript php

是否可以使用锚点使表单提交POST样式?

<form>
    <input name="foo" />
    <input name="bar" />

    <a href="#">Submit this form</a>
</form>

原始问题,this answer

Martijn中解释

是否可以使用超链接作为POST方法传递值? 我想将点击图片的值传递给下一页。

1 个答案:

答案 0 :(得分:1)

我将在下面留下原来的答案,为什么主播不能进行一次电话会议。然而,这个问题已被重新定义,这个答案将回答这个问题:

您不能使用锚点来提交,但通常会让它触发提交:

$('a#myAnchor').click(function(){ $('#myForm').submit() })
/// Or an image, doesn't really matter for jQuery:
$('img#myImg').click(function(){ $('#myForm').submit() })
// Or native js:
document.getElementById('myImg').onclick = function(){ document.getElemetById('myForm').submit() });

如果您要触发提交的元素位于表单内:

$('element').click(function(){ $(this).closest('form').submit() });

没有。锚点是GET,因为锚点会将你发送到一个网址,这会使它获得GET,而不是POST。

POST是以后格式发送的数据,它以服务器可以处理的方式进行编码(对图像等很重要)

在其他主题this reply explains difference between GET and POST

如果你必须,我的意思是真的必须,你可以使用jQuery来伪造一个帖子,这些都是这些内容:

// THIS IS AN UNTESTED DRAFT! Just to shown you a direction:
$('a').click(function(e){
    e.preventDefault();
    var scriptname = this.href.replace(/\??(.*)?/, ''); // remove everything after '?'
    var query     = this.href.replace(/(.*)\?/, ''); // remove everything before '?'
    $.post(scriptname, query);
});

但是,除非你真的真的必须这样做,否则不要这样做。这将向服务器发送ajaxcall,因此页面实际上不会更改。因为这是不好的做法,我不会告诉你如何在完成时更改页面,你必须用jQuery POST documentation

来解决这个问题。