Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript更改当前URL?_Javascript_Jquery_Html_Ruby On Rails_Url - Fatal编程技术网

如何使用JavaScript更改当前URL?

如何使用JavaScript更改当前URL?,javascript,jquery,html,ruby-on-rails,url,Javascript,Jquery,Html,Ruby On Rails,Url,我有一个select标记来选择要在当前表上显示的“行”数 <%=select_tag :per_page, options_for_select([10,20,50,100]....some more code...., onchange => "if (this.value) {windows.location='?per_page='+(this.value);}' %> 我如何在第一个“blah”之后插入一个字符串,比如onchange事件? 因为如果我在执行搜索后更改

我有一个select标记来选择要在当前表上显示的“行”数

<%=select_tag :per_page, options_for_select([10,20,50,100]....some more code...., onchange => "if (this.value) {windows.location='?per_page='+(this.value);}' %>
我如何在第一个“blah”之后插入一个字符串,比如onchange事件?
因为如果我在执行搜索后更改显示的行数,它将完全忽略搜索参数并再次显示每个结果。

您可以尝试使用此代码

$(文档).ready(函数(){
//jquery
$(location.attr('href');
//纯javascript
var pathname=window.location.pathname;
//在警报窗口中显示它
警报(窗口、位置);

});所以一开始很不清楚你的问题是什么意思,但我想我明白了。在更改下拉选择时,有两个参数要传递到url中。这意味着您必须检索当前URL的搜索值。你可以通过两种方式来做到这一点

首先,您可以在页面的某个地方包含一个隐藏的输入,其中包含搜索参数的值,例如

<input type="hidden" value="[the search param value]" id="search_value"/> 
您只需将其适当地附加到正在构建的url

另一种方法是访问
location.search
属性,然后使用javascript中的RegExp或字符串操作方法解析url中所需的值。e、 g

var urlSearchParams = location.search.replace('?','').split('&');
var valueMap = {};
searchParams.forEach(function(a){
    var kv = a.split('=');
    valueMap[kv[0]] = kv[1];
});
//get the search value you want
var search = valueMap["search"];

第三种方法是检索参数并将其添加到使用rails模板系统制作的JS代码模板中。

您是否尝试过
location.href
?在发布后大约3分钟,我实际上已经解决了这个问题,但确实是这样,尽管最后的一些代码是不必要的:)
document.getElementById("search_value").value;
var urlSearchParams = location.search.replace('?','').split('&');
var valueMap = {};
searchParams.forEach(function(a){
    var kv = a.split('=');
    valueMap[kv[0]] = kv[1];
});
//get the search value you want
var search = valueMap["search"];