Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

redirect user to current page with some querystring using javascript

Tags:

When a person clicks on a link, I want to do this:

  1. grab the text from a textbox
  2. encode the text
  3. redirect to currentpage.aspx?search=textboxvalue

I have this so far but its not working:

window.location.href = "?search=" + escape( $("#someId").val()); 
like image 749
mrblah Avatar asked Aug 21 '09 00:08

mrblah


People also ask

How do you redirect to another page in JavaScript with get data?

To redirect to another page in JavaScript, you can use window. location. href property, window. location will also work and if you want you can use window.

How do you redirect someone in JavaScript?

Answer: Use the JavaScript window. location Property If you want to redirect the user from one page to another automatically, you can use the syntax window. location. replace("page_url") .

How do you pass a Querystring?

To pass in parameter values, simply append them to the query string at the end of the base URL. In the above example, the view parameter script name is viewParameter1.

What is Querystring in JavaScript?

The node:querystring module provides utilities for parsing and formatting URL query strings. It can be accessed using: const querystring = require('node:querystring'); querystring is more performant than <URLSearchParams> but is not a standardized API.


2 Answers

I needed to do something similar to what you wanted so I put together a function that allows you to do it. I hope it is found useful. I have tested it pretty extensively and not found any issues, please don't hesitate to let me know if any issues are found.

The 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;     } } 

How to Use It

The function accepts an object literal as its only argument. The object literal should contain the query string variable(s) that you want to reload the page with. It accounts for existing variables and will override an existing one if you specify it in the object literal you pass.

So, lets say our location is http://localhost/helloworld.php and I want to redirect to the current page with a query string variable foo whose value should be bar, I'd call the function as follows:

reloadWithQueryStringVars({"foo": "bar"}); 

The browser will navigate to http://localhost/helloworld.php?foo=bar. And If I pass the function the following:

reloadWithQueryStringVars({"foo": "bar2"}); 

The browser will navigate to http://localhost/helloworld.php?foo=bar2.

As the function accepts a object literal, you can pass multiple properties to the function for multiple query string vars. If I'm still at http://localhost/helloworld.php?foo=bar2 and I call function as follows

reloadWithQueryStringVars({"foo": "bar3", "answer": "42", "bacon": "tasty"}); 

The browser will navigate to http://localhost/helloworld.php?foo=bar3&answer=42&bacon=tasty

Your Use Case

In answer to the question however, you'd call the function as follows:

reloadWithQueryStringVars({"search": escape( $("#someId").val() )}); 
like image 169
Josh Davenport-Smith Avatar answered Oct 24 '22 09:10

Josh Davenport-Smith


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

like image 31
Zed Avatar answered Oct 24 '22 11:10

Zed