您可以使用 GET 方法,但您将在 URL 中获取名称-值对,并且它不会拾取模板。如果您在此表格中键入“5”:
<form action="/orders" method="get">
<input type="text" name="id"/>
<input type="submit" value="Submit"/>
</form>
提交时,您将获得 URL /orders?id=5,而不是 /orders/5。
如果您正在寻找 /orders/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>
您可能必须添加一些转义,并在模板输入不可用时处理条件,并且可能测试一些其他边缘情况,但上面的代码适用于具有任意数量模板元素的基本情况,并且会让你到上面的 /orders/5 。