回答
var params = [
"foo=bar",
"base=ball"
];
window.location.href =
"http://" +
window.location.host +
window.location.pathname +
'?' + params.join('&');
您的change
事件处理程序中的代码将执行此操作。
例如:
$('#my_dropdown_id').bind('change', function(){
var params = [
"foo=bar",
"base=" + $(this).val()
];
window.location.href = "http://" + window.location.host + window.location.pathname + '?' + params.join('&');
});
如果你匆忙,不介意可能重复自己,'window.location.href + =“&foo = bar&base = ball”'可以在一个捏。 – rymo 2012-06-01 05:42:58
请注意下面的答案(http://stackoverflow.com/a/16553500/190599)关于不直接指定http。 – CodeReaper 2015-02-02 09:38:24
这是一个老问题,但它在谷歌搜索结果中第一个走了过来。
我去的解决方案与jAndy的相似。
window.location.pathname
给我的网页没有查询字符串的网址。 然后,我可以用"?"+$.param({'foo':'bar','base':'ball'})
构建查询字符串,然后将其附加到路径名并设置为window.location.href
。
window.location.href = window.location.pathname+"?"+$.param({'foo':'bar','base':'ball'})
嗨jgreen,欢迎来到Stack Overflow。感谢您分享您的解决方案作为另一个答案。提供一个老问题的详细答案,肯定会对未来的访问者有所帮助。 +1 – jmort253 2012-11-03 00:11:52
如果用最精彩的答案去,你可能要与
window.location.protocol
更换
http://
的代码,以便它适用于其他协议,如HTTPS或文件。所以
window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + '?' + params.join('&');
如果你有一个现有的查询字符串,你想保持那么这个版本确实是,并增加了新的PARAMS任何现有的。密钥被转换为小写字母,因此不会添加重复项。维护quersytring确实使解决方案更加复杂,所以我只会在需要时执行此操作。
$("#sortby").change(function() {
var queryString = getQueryStrings();
// Add new params to the querystring dictionary
queryString["sortby"] = $("#sortby").val();
window.location.href =
window.location.protocol + "//" +
window.location.host +
window.location.pathname +
createQueryString(queryString);
});
// http://stackoverflow.com/questions/2907482
// Gets Querystring from window.location and converts all keys to lowercase
function getQueryStrings() {
var assoc = {};
var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); };
var queryString = location.search.substring(1);
var keyValues = queryString.split('&');
for (var i in keyValues) {
var key = keyValues[i].split('=');
if (key.length > 1) {
assoc[decode(key[0]).toLowerCase()] = decode(key[1]);
}
}
return assoc;
}
function createQueryString(queryDict) {
var queryStringBits = [];
for (var key in queryDict) {
if (queryDict.hasOwnProperty(key)) {
queryStringBits.push(key + "=" + queryDict[key]);
}
}
return queryStringBits.length > 0
? "?" + queryStringBits.join("&")
: "";
}
如果你想有一个非常简单的方法来保存查询字符串,并可能追加到它,使用window.location.search
;这里有一个片段:
var search = window.location.search + (window.location.search ? "&" : "?");
search += "param1=foo¶m2=bar";
window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + search;
你可以,当然,使用建立查询字符串的剩余部分,如其他例子中的一个更复杂的方式,但关键是要充分利用Location.search
。
- 1. Zend Framework:将查询字符串追加到当前页面url
- 2. 使用查询字符串强制页面重新加载
- 3. 用改变的查询字符串重新加载页面
- 4. HTML链接,追加查询字符串到当前URL
- 5. jQuery submit() - 追加查询字符串到页面?
- 6. 在页面加载时将查询字符串添加到URL
- 7. PHP如何在页面加载之前向URL添加查询字符串
- 8. jQuery:控制页面重新加载或离开当前页面
- 9. 重新加载当前函数后无时间重新加载页面
- 10. 追加查询字符串和rewrite_rules
- 11. MVC在查询字符串中追加“#”
- 12. 更改查询字符串,无需重新加载/刷新
- 13. 如何使用jquery重新加载PHP查询(包含页面)
- 14. 当页面加载/查询时,加载加载gif VB.NET
- 15. Codeigniter忽略查询字符串。只加载索引页面
- 16. 追加查询字符串在重写规则的Web.config
- 17. htaccess的重写规则追加查询字符串参数
- 18. .htaccess的追加到查询字符串QSA没有重定向
- 19. 微软Azure追加额外的查询字符串查询字符串的URL
- 20. 链接到没有查询字符串的当前页面
- 21. 如何在不重新加载当前页面的情况下加载URL?
- 22. 成功jQuery,重新加载页面,然后追加?
- 23. PHP MVC追加URL参数,无需重新加载页面?
- 24. 使用原型重新加载页面
- 25. apache重定向追加查询字符串
- 26. 重写为追加到查询字符串
- 27. 追加查询字符串通过Apache重写规则
- 28. 只能使用jQuery重新加载当前页面div使用jQuery
- 29. 如何使用htaccess将HTTP_REFERER追加到查询字符串?
- 30. 使用mod_rewrite将查询字符串追加到参数
到目前为止你有什么?任何代码? – Reigel 2010-07-19 12:33:59