使用Javascript/jQuery在基于段的URL中获取查询字符串

Nyx*_*nyx 5 javascript php jquery codeigniter

我正在使用PHP框架Codeigniter,它使用基于段的网址,http://www.mydomain.com/age/11/name/john/color/red而不是通常的查询字符串lijke http://www.mydomain.com/index.php?age=11&name=john&color=red.

如何age 使用Javascript/jQuery从URL 获取密钥的值?

获取值后,11我会在触发事件时将其传递给jQuery对象.

$( "#searchdistance_slider" ).slider({
        range: "min",
        value: 5,
        min: 0.5,
        max: 10,
        slide: function( event, ui ) {
            $( "#search_distance" ).val(ui.value + " miles");
            window.location.replace("http://www.domain.com/" + age); 
            /* passing the value of age into URL to redirect to */
        }
    });
Run Code Online (Sandbox Code Playgroud)

UPDATE

  • 键/值对可以改变位置,并且URL中的键/值对的数量不固定
  • 我需要在Javascript中获取值,因为用户使用滑块来更改特定值,比如说age,20滑块中的新值将用于将用户重定向到http://www.mydomain.com/age/20/name/john/color/red

Mat*_*Mat 3

您可以尝试使用jQuery URL 解析器插件。

使用该.segment(n)调用在 URL 路径中搜索"age",并获取下一个应包含您要查找的年龄值的路径。

或者尝试.fsegment(n)如果age始终处于同一位置的方法。

或者与类似的东西一起使用.segment()

var parts = $.url(your_url).segment();
var params = [];
for (var i=0; i<parts.length/2; i++) {
   params[parts[2*i]] = parts[2*i+1];
}
var age = parseInt(params['age']);
Run Code Online (Sandbox Code Playgroud)

(不过我确信有一种更漂亮的方法可以做到这一点。)

如果您只想要该age部分,则不必将所有内容都填充到字典中。当您找到所需的密钥时,请尽早退出循环。

如果您想用更改的年龄重建路径,请尝试以下操作:

var parts = $.url(your_url).segment();
var newpath = '';
for (var i=0; i<parts.length/2; i++) {
  if (parts[2*i] == 'age') {
    newpath += '/age/' + (parseInt(parts[2*i+1]) + 42); // put your age modifiy
                                                        // code here
  } else {
    newpath += '/' + parts[2*i] + '/' + parts[2*i+1];
  }
}
alert(newpath);
Run Code Online (Sandbox Code Playgroud)