好吧,我有一个常规搜索表单(method="GET"
)。问题是它的控制器需要这样的URL:
search/<category>/<int:page>
我的问题是,如何才能将上述网址重定向,而不是:
/search?q=jfiejfiaj
我是否需要使用JS或者我可以使用纯HTML吗?
答案 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>