Javascript window.location重定向,url重写,无查询字符串

Javascript window.location重定向,url重写,无查询字符串,javascript,html,forms,url-rewriting,window.location,Javascript,Html,Forms,Url Rewriting,Window.location,我一直在谷歌上搜索了大约一个小时,所以如果之前有人问我这个问题,请原谅我 我使用的是纯Javascript,不希望使用jQuery 序言 我有一个带有3个选择框的HTML表单,用于控制项目的搜索。当其中一个更新时,一个简单的函数读取选择框中的每个值,并生成一个与我们的URL重写标准匹配的URL http://www.example.com/search/select1/data1/select2/data2/select3/data3/ 然后将其用于 history.pushState 更新

我一直在谷歌上搜索了大约一个小时,所以如果之前有人问我这个问题,请原谅我

我使用的是纯Javascript,不希望使用jQuery

序言

我有一个带有3个选择框的HTML表单,用于控制项目的搜索。当其中一个更新时,一个简单的函数读取选择框中的每个值,并生成一个与我们的URL重写标准匹配的URL

http://www.example.com/search/select1/data1/select2/data2/select3/data3/
然后将其用于

history.pushState
更新浏览器的url地址,以便用户可以立即将页面添加到书签中。这个很好用

问题

当用户按下表单按钮时,我想要的是读取所有选择框值的函数,像以前一样生成URL,但也加载此特定URL,以便底层数据库代码可以返回页面上该搜索的结果

然而,当我使用

window.location.href
它加载页面,但也从表单提交发送查询字符串。这会弄乱数据库代码,因为从本质上讲,它会两次获取所有数据

示例

我从select1中选择“A”,从select2中选择“D”,从select3中选择“E”

这导致:

http://www.example.com/search/select1/A/select2/D/select3/E/?select1=A&select2=D&select3=E
所以…

是否可以以正确的重写格式生成URL,然后加载不带查询字符串的页面

JAVASCRIPT

 function changepage(loadpage)
    {
        var theform
        theform = document.getElementById("searchform");

        var pageurl

        pageurl = 'http://www.example.com/search/'

        var select1 = theform.select1.value;
        var select2 = theform.select2.value;
        var select3 = theform.select3.value; 

        if(select1 != '')
        {
            pageurl = pageurl + 'select1/' + select1 + '/';
        }

        if(select2 != '')
        {
            pageurl = pageurl + 'select2/' + select2 + '/';
        }

        if(select3 != '')
        {
            pageurl = pageurl + 'select3/' + select3 + '/';
        }

        history.pushState('data', '', pageurl);

        if(loadpage=='yes')
        {
        window.location.href = pageurl;
        }
    }
HTML

<form method="post" action="form.asp">
    <select id="select1"><option>A</option><option>B</option></select>
    <select id="select2"><option>C</option><option>D</option></select>
    <select id="select3"><option>E</option><option>F</option></select>
    <button onClick="changepage('yes');">
</form>

AB
光盘
环境足迹

上添加
type=“button”
,否则它将使用默认值(
submit
)并提交表单。谢谢。那就对了。那么,对于这样的搜索表单,通过url重写,但仍然允许没有Javascript的用户使用POST提交表单,这种公认的方式是什么呢?