回答
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. 如何使用新的查詢字符串重新加載ASP頁面?
- 5. 請查詢字符串,同時重新加載頁面AngularJS
- 6. 追加查詢字符串到父頁面,當我們使用JavaScript
- 7. 追加(查詢字符串)參數當前URL
- 8. HTML鏈接,追加查詢字符串到當前URL
- 9. 更改使用javascript重新加載當前頁面的URL
- 10. jQuery submit() - 追加查詢字符串到頁面?
- 11. 追加查詢字符串從多個頁面
- 12. 如何將查詢字符串追加到當前使用jQuery的URL
- 13. 在頁面加載時將查詢字符串添加到URL
- 14. Rails重新加載頁面之前的Ajax查詢數據
- 15. 的RewriteCond追加查詢字符串
- 16. PHP如何在頁面加載之前向URL添加查詢字符串
- 17. 我如何使用jquery將當前查詢字符串追加到.ashx url
- 18. jQuery:控制頁面重新加載或離開當前頁面
- 19. 重新加載當前函數後無時間重新加載頁面
- 20. 追加查詢字符串和rewrite_rules
- 21. 追加查詢字符串到url
- 22. MVC在查詢字符串中追加「#」
- 23. 更改查詢字符串,無需重新加載/刷新
- 24. 如何使用jquery重新加載PHP查詢(包含頁面)
- 25. Jquery根據當前頁面中的字符串加載遠程頁面元素
- 26. 如何使用新的查詢字符串值重新加載jqGrid
- 27. Location.href只是重新加載當前頁
- 28. 當頁面加載/查詢時,加載加載gif VB.NET
- 29. ajax腳本加載新的html而不是追加到當前頁面...?
- 30. 查詢字符串似乎會影響頁面加載速度
到目前爲止你有什麼?任何代碼? – Reigel 2010-07-19 12:33:59