回答
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