如何提交表单与GET方法以及使用URI模板?(How to submit form with GET

2019-07-21 08:58发布

我读这篇文章http://blog.welldesignedurls.org/2007/01/11/proposing-uri-templates-for-webforms-2/约URI的模板,但它似乎是一个死的项目。

因此,有无论如何要提交表单这样吗?

<form action="/orders/{id}" method="get">
    <input type="text" name="id"/>
    <input type="submit" value="Submit"/>
</form>

submiting转发到奇数URL后的形式:?/命令/%7Bid%7D ID = 1

Answer 1:

您可以使用GET方法,但你会得到的名称 - 值对的URL,它不会拿起模板。 如果你输入“5”这个形式:

<form action="/orders" method="get">
    <input type="text" name="id"/>
    <input type="submit" value="Submit"/>
</form>

在提交,您将得到URL /订单?ID = 5,而不是/命令/ 5。

如果你正在寻找/命令/ 5,这是可以做到很轻松了一些jQuery的:

<script type="text/javascript" language="javascript">
$("form").submit(function () {
    // prevent the default GET form behavior (name-value pairs)
    event.preventDefault();

    // Get the action attribute
    var action = $("form").attr("action").toLowerCase();

    // For each form element found, replace {elementName} in the action attribute to build a URL from template
    var values = $("form").serialize().split("&");
    for (var i = 0; i < values.length; i++) {
        var tokens = values[i].split("=");
        action = action.replace("{" + tokens[0].toLowerCase() + "}", tokens[1]);
    }

    // Send the user off to the URL w/ template elements replaced
    window.location.href = action;
});
</script>

你将不得不增加一些逃脱可能,并处理条件时,模板输入不可用,并可能测试其他一些边缘情况,但上面的代码工作的基本情况与任意数量的模板元素,并会得到你到/在上面的命令/ 5。



Answer 2:

您忘记关闭action属性。

<form action="/orders/{id}" method="get">
    <input type="text" name="id"/>
    <input type="submit" value="Submit"/>
</form>

和用于使{}使用escape()函数。

$queryString = "/orders/{id}";
$safeQueryString = escape( $queryString );

<form action="<?=$safeQueryString?>" method="get">

通过表格ID

$('input[type="submit"]').on('click',function(e)
{
    e.preventDefault();
    var forms = $(this).parents('form');
    var formID = forms.attr('id');

    //appending form id to form action
    var dataString = forms.serialize()+'&formID='+formID;

    forms.submit();

});


文章来源: How to submit form with GET method and using URI template?
标签: html forms rest