jquery结合url参数更改和字符串替换

jquery结合url参数更改和字符串替换,jquery,string,url,redirect,parameters,Jquery,String,Url,Redirect,Parameters,我想重定向用户,但首先我需要通过更改字符串来操作url: 我是这样做的: var url = location.href; url=url.replace("featured", "list"); window.location.href=url; // location.search = jQuery.query.set("page", 1); // 但在重定向用户之前,我还想将url的get参数更改为特定值。 我在这里读到,应该这样做: var url = loc

我想重定向用户,但首先我需要通过更改字符串来操作url:

我是这样做的:

var url = location.href;        
url=url.replace("featured", "list");    
window.location.href=url;
//
location.search = jQuery.query.set("page", 1);
//
但在重定向用户之前,我还想将url的get参数更改为特定值。 我在这里读到,应该这样做:

var url = location.href;        
url=url.replace("featured", "list");    
window.location.href=url;
//
location.search = jQuery.query.set("page", 1);
//
我只是不知道如何在重定向之前将字符串和参数操作结合起来,因为位置搜索没有考虑我的字符串替换,而且字符串替换也没有考虑location.search

基本上,如果用户在这里:

我希望他被重定向到:

当然,不管他的页码是多少

附言:我不是想强迫用户做任何事情。我的观点是使用数据过滤系统,如果它被激活,用户应该处于列表模式,从第1页开始。就这些


任何帮助都将不胜感激

您可以运行GUP函数。GUP函数获取url中的特定参数。在您的案例中,“页面”和“模型”

function gup( name ){
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
  var regexS = "[\\?&]"+name+"=([^&#]*)";  
  var regex = new RegExp( regexS );  
  var results = regex.exec( window.location.href ); 
  if( results == null ){    
      return "";  
  }else{    
      return results[1];
  }
}
//this function checks the value of the 'page' and 'mode' parameters
function checkURL(){
    page = gup('page');
    mode = gup('mode');
    //if the page parameter is 1 and the mode parameter is 'featured' then redirect
    if(page == 3 && mode == 'featured){
        window.location.replace('http://www.mysite.com/index.php?page=1&mode=list');
    }
}
希望这能指引你正确的方向。

谢谢你,代码29。 这是正确的方向,即使结局不是我所需要的

这是工作脚本:

var regexS = "[\\?&]page=([^&#]*)";  
var regex = new RegExp( regexS ); 
var url = location.href;
var results = regex.exec( url ); 
if( results != null )
{    
    url=url.replace("featured", "list");
    url=url.replace("page="+results[1], "page=1");
}
window.location.href=url;

这就像一个符咒。

为什么不再次使用
replace()
?因为,正如我所说的:“当然,不管他在哪一个页码。”我如何替换一个我还不知道的值?“特色”可以很容易地替换为“列表”,但页面值可能是无限的,无论值是多少,都应该替换为1。那么,除了这个数字之外,文本的每一部分都取一个怎么样?因为URL中还有其他get变量。我的示例尽可能简单地解释了这种情况,但事实上,url可以尽可能复杂。我唯一可以依赖的是,我可能有一个“featured”值(如果是这种情况,我会更改它),并且我总是有一个页码参数(不管它是什么,它的值应该更改为1)。url的其余部分是不可预测的,应该保持不变。然后拆分字符串?首先基于
所以第二个字符串是您的参数列表,然后基于
&
拆分参数列表并对其进行过滤,直到找到一个
.包含()
的“页面”或其他内容,然后对其进行操作,并重新构建您的URL。对不起,我帮不上什么忙,我知道这个建议看起来非常迂回和烦人。最终的url是未知的,但你认为它是。条件是不相关的,因为我无论如何都要应用更改。假设url可以是任何形式,它是不可预测的,但它总是有一个模式和一个页码。我需要输出完全相同的url(无论它是什么),除了“列表”模式和第1页。您的脚本无法解决此问题。