使用javascript将用户重定向到当前页面并使用一些查询字符串

当一个人点击链接时,我想这样做:

  1. 从文本框中抓取文本
  2. 编码文本
  3. 重定向到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)

   

因此,在单击按钮后,控件将进入服务器端,然后在那里
你可以访问你形成的查询字符串!