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

mrb*_*lah 23 javascript jquery

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

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

到目前为止,我有这个,但它不起作用:

window.location.href = "?search=" + escape( $("#someId").val());
Run Code Online (Sandbox Code Playgroud)

Jos*_*ort 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用它

该函数接受一个对象文字作为其唯一参数.对象文字应包含要重新加载页面的查询字符串变量.它会考虑现有变量,如果在传递的对象文字中指定现有变量,则会覆盖现有变量.

所以,让我们说我们的位置是http://localhost/helloworld.php,我想用一个查询字符串变量重定向到当前页面,foo其值应该是bar,我将调用该函数如下:

reloadWithQueryStringVars({"foo": "bar"});
Run Code Online (Sandbox Code Playgroud)

浏览器将导航到http://localhost/helloworld.php?foo=bar.如果我通过以下功能:

reloadWithQueryStringVars({"foo": "bar2"});
Run Code Online (Sandbox Code Playgroud)

浏览器将导航到http://localhost/helloworld.php?foo=bar2.

由于函数接受对象文字,因此可以将多个属性传递给函数以获取多个查询字符串变量.如果我还在,http://localhost/helloworld.php?foo=bar2我打电话给如下功能

reloadWithQueryStringVars({"foo": "bar3", "answer": "42", "bacon": "tasty"});
Run Code Online (Sandbox Code Playgroud)

浏览器将导航到 http://localhost/helloworld.php?foo=bar3&answer=42&bacon=tasty

你的用例

但是在回答这个问题时,你可以按如下方式调用该函数:

reloadWithQueryStringVars({"search": escape( $("#someId").val() )});
Run Code Online (Sandbox Code Playgroud)


Zed*_*Zed 8

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

  • 如果URL已经有一个查询字符串,这不会添加它而不是替换它吗?您最终会有多个搜索细分. (5认同)

Ken*_*nny 5

怎么样:

window.location = "/currentpage.aspx?search=" + escape( $("#someId").val());
Run Code Online (Sandbox Code Playgroud)

要么

window.location = window.location.pathname + "?search=" + escape( $("#someId").val());
Run Code Online (Sandbox Code Playgroud)

等等...


gre*_*ama 0

哪一部分不起作用?

尝试使用encodeURI()而不是escape()。