使用javascript将用户重定向到当前页面并使用一些查询字符串
当一个人点击链接时,我想这样做:
- 从文本框中抓取文本
- 编码文本
- 重定向到currentpage.aspx?search = textboxvalue
到目前为止,我有这个,但它不起作用:
window.location.href = "?search=" + escape( $("#someId").val());
我需要做一些类似于你想要的事情,所以我整理了一个允许你这样做的function。 我希望它有用。 我已经对它进行了相当广泛的测试,没有发现任何问题,如果发现任何问题,请随时告诉我。
function
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
。 如果我通过以下function:
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() )});
window.location.href = window.location.href + "?search=" + escape( $("#someId").val());
?
怎么样:
window.location = "/currentpage.aspx?search=" + escape( $("#someId").val());
要么
window.location = window.location.pathname + "?search=" + escape( $("#someId").val());
等等…
你需要预先添加实际的基本url
window.location.href = window.location.href + "?search=" + escape( $("#someId").val());
向window.location.href
添加内容的问题是,如果你已经这样做了? 你只需要多次追加"?search=..."
。 更重要的是,它比它需要的更复杂。
你已经在使用jQuery了。 为什么不这样做呢?
Search
有:
$(function() { $("#go").click(function() { $("#search").submit(); return false; }); });
然后你不必担心正确的URL,编码等。
如果您只想更改搜索字符串,则会更改错误的位置属性。 我想你想这样做:
location.search = "?search=" + encodeURIComponent( $("#someId").val());
$(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; }); });
什么部分不起作用?
尝试encodeURI()而不是escape()。
$("a").click(function() { document.location.href += "?search=" + encodeURIComponent($("#myTextBox").val()); });
function Redirect() { window.location.href = "URL_TO_BE_Redircted"; }
然后在按钮(asp.net)
因此,在单击按钮后,控件将进入服务器端,然后在那里
你可以访问你形成的查询字符串!