Javascript 使用查询参数重新生成url

Javascript 使用查询参数重新生成url,javascript,jquery,Javascript,Jquery,我有一个网址: http://www.example.com/gclid/YH67/utm/2908321/id/test 我想使用带有查询参数的url: http://www.example.com/?gclid=YH67&utm=2908321&id=test 我知道的是主urlhttp://www.example.com/ 我想让url具有正确的参数(我不知道key/value的具体参数) 下面是一个简单的例子,我看到它是有效的 if (window.location.

我有一个网址:

http://www.example.com/gclid/YH67/utm/2908321/id/test
我想使用带有查询参数的url:

http://www.example.com/?gclid=YH67&utm=2908321&id=test
我知道的是主url
http://www.example.com/

我想让url具有正确的参数(我不知道key/value的具体参数)

下面是一个简单的例子,我看到它是有效的

if (window.location.href === "http://www.example.com") { 
   url = "http://www.example.com?gclid=test"; 
   window.history.pushState("", "", url); 
}
试试这个-

function makeURL(url)
{
  var mainUrl = "http://www.example.com/";

  var urlArr = url.split(mainUrl);
  if(urlArr[1] && urlArr[1] !== "")
  {
       // assuming url will always be a perfect url
       var queryPoints = urlArr[1].split("/");
       var queryStr = "?";
       for(var i = 0; i < queryPoints.length; i+=2)
       {
          var key = queryPoints[i];
          var value = queryPoints[i+1];
          if(i+2 == queryPoints.length)
            queryStr += key+ "=" + value;
          else
            queryStr += key+ "=" + value + "&";
       }
    var queriedUrl = mainUrl + queryStr;
    console.log(queriedUrl);
    return queriedUrl;
  }
  return url;
}
函数makeURL(url)
{
var mainUrl=”http://www.example.com/";
var urlArr=url.split(mainUrl);
如果(urlArr[1]&&urlArr[1]!=“”)
{
//假设url始终是一个完美的url
var queryPoints=urlArr[1]。拆分(“/”;
var queryStr=“?”;
对于(变量i=0;i
像这样调用上面的函数-
makeURL(“http://www.example.com/gclid/YH67/utm/2908321/id/test)
。它将以查询字符串格式返回数据

试试这个-

function makeURL(url)
{
  var mainUrl = "http://www.example.com/";

  var urlArr = url.split(mainUrl);
  if(urlArr[1] && urlArr[1] !== "")
  {
       // assuming url will always be a perfect url
       var queryPoints = urlArr[1].split("/");
       var queryStr = "?";
       for(var i = 0; i < queryPoints.length; i+=2)
       {
          var key = queryPoints[i];
          var value = queryPoints[i+1];
          if(i+2 == queryPoints.length)
            queryStr += key+ "=" + value;
          else
            queryStr += key+ "=" + value + "&";
       }
    var queriedUrl = mainUrl + queryStr;
    console.log(queriedUrl);
    return queriedUrl;
  }
  return url;
}
函数makeURL(url)
{
var mainUrl=”http://www.example.com/";
var urlArr=url.split(mainUrl);
如果(urlArr[1]&&urlArr[1]!=“”)
{
//假设url始终是一个完美的url
var queryPoints=urlArr[1]。拆分(“/”;
var queryStr=“?”;
对于(变量i=0;i

像这样调用上面的函数-
makeURL(“http://www.example.com/gclid/YH67/utm/2908321/id/test)
。它将以查询字符串格式返回数据

下面是一个更新,它将给定的url转换为带有查询字符串的url:

var url='1〕http://www.example.com/gclid/YH67/utm/2908321/id/test';
var域http://www.example.com/';
函数extractParams(url、域){
var params=url.replace(域“”).split(“/”);
var newparams={};

对于(var i=0;i,这里有一个更新,将给定url转换为带有查询字符串的url:

var url='1〕http://www.example.com/gclid/YH67/utm/2908321/id/test';
var域http://www.example.com/';
函数extractParams(url、域){
var params=url.replace(域“”).split(“/”);
var newparams={};

对于(var i=0;iSo您希望将URL拆分,以便原始字符串中显示为
key/value
的每个键/值对都将是一个查询参数,例如
?key=value
。是否正确?@Alex是的。我尝试使用/拆分URL并连接各个部分,但没有找到一种方法使您希望拆分URL原始字符串中显示为
key/value
的每个键/值对都将是一个查询参数,例如
?key=value
。是否正确?@Alex是的,就是这样。我尝试使用/拆分url并连接部分,但没有找到工作的方法。谢谢。很好,但我不知道确切的位置。例如,如果我有一个位置在url中查询param或nothing当我说positions时,我收回的是key/values参数的数量。这很好。这个代码段只假设第一个参数是key,第二个是value。例如,
/key/value/key2/value2/key3/value3…
等等。这与数字无关。您可以在url中有任意数量的键值对。这应该有效。我想现在它不起作用了。如果我尝试测试它,它会给我带有/Thank you的url。很好,但我不知道确切的位置。例如,如果我在url中有一个查询参数或什么都没有,当我说位置时,我会返回键值对的数量。更新代码以进行检查对于边缘条件。这很好。此代码段只假设第一个是键,第二个是值。例如,
/key/value/key2/value2/key3/value3…
等等。这是数字独立的。url中可以有任意数量的键值对。这应该可以工作。我认为现在它不工作。如果我尝试测试它,它会给出我的网址与/