【问题标题】:HTML Form GET variables to URL variablesHTML 表单 GET 变量到 URL 变量
【发布时间】:2014-03-09 17:12:00
【问题描述】:

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

search/<category>/<int:page>

我的问题是,我怎样才能使上面的 URL 被重定向,而不是:

/search?q=jfiejfiaj

我需要使用 JS 还是可以在纯 HTML 中使用?

【问题讨论】:

  • Here 是类似的问题和there 完整的说明。恐怕你需要在服务器上使用 JS 或 mod_rewrite
  • 点击搜索时,您是否将页面重定向到该 URL?还是您使用 AJAX 获取搜索结果并使用 Javascript 显示结果?
  • 我想你说的是 ASP.NET MVC!
  • @sabithpocker 不,它只是一个带有动作和方法属性的常规表单。
  • @janisz 是的,我担心是这样。

标签: javascript html forms flask


【解决方案1】:

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


编辑:

我不确定是否有更好的方法使用 html 表单本身,但将 html 表单发送到带有其中任何一个的页面,甚至更好:两者兼而有之。

元(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']; ?>";

【讨论】:

  • 我正在使用 Flask。我想我正在使用 MVC 方法:我有控制器、模板和模型文件夹。我在问我是否可以将表单提交请求发送到/search/&lt;searchterm&gt; 而不是/search?q=query。我认为可能的解决方案是使用 JS 捕获提交事件并手动重定向到搜索 URL。怎么可能做到这一点?这是最优解吗?
  • 我不确定是否有更好的方法,但是您可以将表单提交到一个小的自定义 php 脚本,该脚本将重定向到请求的页面。您可以使用 php 在 url 中回显表单的搜索词以进行重定向。要实际重定向,您可以使用 php 或 javascript。我编辑我的答案并放入一些示例代码中。
  • 谢谢,我只是想知道是否有其他方法。
【解决方案2】:

不是纯 HTML。您可以将提交事件处理程序附加到表单,阻止默认提交,使用表单上的参数构建一个新 url,然后重定向。然而,对于获取漂亮的 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 2021-09-07
    • 2011-09-11
    • 1970-01-01
    相关资源
    最近更新 更多