当某人点击某个链接时,我想这样做:
到目前为止,我有这个但是没有用:
window.location.href = "?search=" + escape( $("#someId").val());
答案 0 :(得分:23)
我需要做一些类似于你想要的事情,所以我把一个允许你做的功能放在一起。我希望它有用。我已经对它进行了相当广泛的测试,没有发现任何问题,如果发现任何问题,请随时告诉我。
function reloadWithQueryStringVars (queryStringVars) {
var existingQueryVars = location.search ? location.search.substring(1).split("&") : [],
currentUrl = location.search ? location.href.replace(location.search,"") : location.href,
newQueryVars = {},
newUrl = currentUrl + "?";
if(existingQueryVars.length > 0) {
for (var i = 0; i < existingQueryVars.length; i++) {
var pair = existingQueryVars[i].split("=");
newQueryVars[pair[0]] = pair[1];
}
}
if(queryStringVars) {
for (var queryStringVar in queryStringVars) {
newQueryVars[queryStringVar] = queryStringVars[queryStringVar];
}
}
if(newQueryVars) {
for (var newQueryVar in newQueryVars) {
newUrl += newQueryVar + "=" + newQueryVars[newQueryVar] + "&";
}
newUrl = newUrl.substring(0, newUrl.length-1);
window.location.href = newUrl;
} else {
window.location.href = location.href;
}
}
该函数接受一个对象文字作为其唯一参数。对象文字应包含要重新加载页面的查询字符串变量。它会考虑现有变量,如果您在传递的对象文字中指定现有变量,它将覆盖现有变量。
所以,假设我们的位置为http://localhost/helloworld.php
,我想重定向到当前页面,其中查询字符串变量foo
的值应为bar
,我会调用该函数如下:
reloadWithQueryStringVars({"foo": "bar"});
浏览器将导航至http://localhost/helloworld.php?foo=bar
。如果我通过以下功能:
reloadWithQueryStringVars({"foo": "bar2"});
浏览器将导航至http://localhost/helloworld.php?foo=bar2
。
当函数接受对象文字时,您可以将多个属性传递给函数以获取多个查询字符串变量。如果我仍在http://localhost/helloworld.php?foo=bar2
,我将函数调用如下
reloadWithQueryStringVars({"foo": "bar3", "answer": "42", "bacon": "tasty"});
浏览器将导航至http://localhost/helloworld.php?foo=bar3&answer=42&bacon=tasty
然而,在回答这个问题时,你可以按如下方式调用该函数:
reloadWithQueryStringVars({"search": escape( $("#someId").val() )});
答案 1 :(得分:8)
window.location.href = window.location.href + "?search=" + escape( $("#someId").val());
?
答案 2 :(得分:5)
怎么样:
window.location = "/currentpage.aspx?search=" + escape( $("#someId").val());
或
window.location = window.location.pathname + "?search=" + escape( $("#someId").val());
等等...
答案 3 :(得分:1)
您需要添加实际的基本网址
window.location.href = window.location.href + "?search=" + escape( $("#someId").val());
答案 4 :(得分:1)
$(document).ready(function(){
$('a').click(function(e){
window.location = "?search=" + encodeURIComponent($("#someId").val());
//this line of code is intended for older ie and might work,
//because I don't remember it exactly
e.stopPropagation();
return false;
});
});
答案 5 :(得分:1)
向window.location.href
添加内容的问题是,如果您已经这样做了?您只需多次追加"?search=..."
即可。更重要的是,它比它需要的更复杂。
你已经在使用jQuery了。为什么不这样做?
<form id="search" method="get">
<input type="text" name="search">
</form>
<a href="#" id="go">Search</a>
使用:
$(function() {
$("#go").click(function() {
$("#search").submit();
return false;
});
});
然后您不必担心正确的URL,编码等。
答案 6 :(得分:1)
如果您只想更改搜索字符串,则表示您正在更改错误的位置属性。我想你想这样做:
location.search = "?search=" + encodeURIComponent( $("#someId").val());
答案 7 :(得分:0)
哪部分不起作用?
尝试使用encodeURI()而不是escape()。
答案 8 :(得分:0)
$("a").click(function() {
document.location.href += "?search=" + encodeURIComponent($("#myTextBox").val());
});
答案 9 :(得分:0)
function Redirect()
{
window.location.href = "URL_TO_BE_Redircted";
}
然后按钮(asp.net)
<asp:Button runat="server" id="btnRedirect" onClientClick="Redirect();return false;"/>
所以点击按钮后控件将进入服务器端,然后