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

2021/01/26 07:21 · jquery ·  · 0评论

当某人单击链接时,我要这样做:

  1. 从文本框中获取文本
  2. 编码文字
  3. 重定向到currentpage.aspx?search = textboxvalue

到目前为止,我有这个,但是没有用:

window.location.href = "?search=" + escape( $("#someId").val());

我需要做一些与您想要的相似的事情,因此我组合了一个函数来执行此操作。我希望它会有用。我已经对其进行了广泛的测试,没有发现任何问题,如果发现任何问题,请不要犹豫让我知道。

功能

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

当函数接受对象文字时,您可以将多个属性传递给函数以获取多个查询字符串var。如果我仍然在,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());

等等...

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,编码等。

您需要添加实际的基本网址

window.location.href = window.location.href + "?search=" + escape( $("#someId").val());

如果您只想更改搜索字符串,那么您将更改错误的location属性。我认为您想这样做:

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)

    <asp:Button runat="server" id="btnRedirect" onClientClick="Redirect();return false;"/>

因此,单击按钮后,控件将进入服务器端,

您可以在其中访问所形成的Querystring!

本文地址:http://jquery.askforanswer.com/shiyongjavascriptshiyongyixiechaxunzifuchuanjiangyonghuzhongdingxiangdaodangqianyemian.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!