HTML表格GET变量到URL变量

时间:2014-03-09 17:12:01

标签: javascript html forms flask

好吧,我有一个常规搜索表单(method="GET")。问题是它的控制器需要这样的URL:

search/<category>/<int:page>

我的问题是,如何才能将上述网址重定向,而不是:

/search?q=jfiejfiaj

我是否需要使用JS或者我可以使用纯HTML吗?

2 个答案:

答案 0 :(得分:0)

您是否正在使用MVC方法来处理Web应用程序?您需要在Apache上使用mod-rewrite来更改url请求。


编辑:

我不确定是否有更好的方式使用html表单本身,但是将html表单发送到具有这些中的任何一个或更好的页面:两者。

Meta(Html):(使用php)

<meta http-equiv="refresh" content="0; url=http://stackoverflow.com/?search=<?php echo $_GET['search']; ?>">

Javascript :(使用php)

window.location.href = "http://stackoverflow.com/?search=<?php echo $_GET['search']; ?>";

答案 1 :(得分:0)

不是纯HTML。您可以将提交事件处理程序附加到表单,阻止默认提交,使用表单上的参数构建新的URL,然后重定向。然而,这对于获得漂亮的网址来说是一个非常可怕的解决方案。

忽略这一点,我就是这样做的:

<form method="get" action="/search">
<input type="text" name="keyword" />
<button>Search</button>
</form>
<script>
$('form').submit(function() {
    var form = $(this);
    var params = [];

    $('input', form).each(function(i, item) {
        var input = $(item);

        params[input.prop('name')] = input.val();
    });

    url = form.prop('action');

    for(var param in params) {
        url += '/' + encodeURIComponent(param) + '/' + encodeURIComponent(params[param]);
    }

    document.location = url;

    return false;
});
</script>