How can I remove the query string from the url aft

2019-01-24 00:01发布

I have a URL with a long query string attached to it. After the page loads, I do not require the query string. So I want to remove the query string from the address bar without a page reload.

I tried parent.location.hash = ''; and window.location.href = '/#'

They did not make a difference.

9条回答
Explosion°爆炸
2楼-- · 2019-01-24 00:28

I use this code snippit in my personal projects where i need to remove URL params without re-loading:

var newURL = location.href.split("?")[0];
window.history.pushState('object', document.title, newURL);
查看更多
姐就是有狂的资本
3楼-- · 2019-01-24 00:30

You can't do that without reloading the page, imagine if you could put whatever you wanted in the browser address bar? Security fun :)

Although you can now do it in HTML5 (which will only work on browsers supporting it) using the new history API, but realistically, your scenario best warrants a rewrite instead of including that (seems sledgehammer to crack a nut).

As you said you don't need the query string after the page loads, you should really post back, then redirected to another URL after you've finished your processing.

查看更多
Root(大扎)
4楼-- · 2019-01-24 00:32

I have faced the same problem. My solution was these: Get the request like this:

operation.aspx?opr=lock

After finishing the operation redirect like this:

Response.Redirect("operation.aspx");

In the response, if there is any message, I print them like this:

if (Session["InfoMessages"] != null)
{
    lblMessage.Text = (string)Session["InfoMessages"];
    Session["InfoMessages"] = null;
}

I hope it will help others :)

查看更多
冷血范
5楼-- · 2019-01-24 00:34

Updated Code Now it will work

Just Add Below code in you page whose link you want to change.

// javascript function

   function buildLin(first) {
    var firs = first.toString()
       //alert(firs);
       //document.getElementById("team").value = "1";
           document.location.hash = "#" + firs.replace(/ /g, "_");
        //alert(document.location.hash);
    }

 //jQuery to call above function after page loads

  $(document).ready(function () {
      buildLin(2);
  });

Don't forget to add http://code.jquery.com/jquery-latest.js on your page ​

查看更多
爷的心禁止访问
6楼-- · 2019-01-24 00:35

You could avoid a query string altogether by using POST instead of GET.

查看更多
一纸荒年 Trace。
7楼-- · 2019-01-24 00:42

That is achievable in modern browsers using the history api, but probably isn't the best solution to your problem.

history.replaceState({}, 'some title', '/');

It sounds like you would be better off processing the data and then redirecting to the homepage instead of returning an HTML document directly.

Since you aren't wanting to keep the URL around, it won't be useful for bookmarking, so it is quite likely you would be better off making a POST request.

This suggests that you should be using the POST-Redirect-GET pattern.

查看更多
登录 后发表回答