繁体   English   中英

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

[英]Using Javascript/jQuery to get Query String in Segment-based URL

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

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

在获取值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 */
        }
    });

UPDATE

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

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

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

或者,如果age总是在同一位置,请尝试使用.fsegment(n)方法。

或者使用.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']);

(我确信有更好的方法可以做到这一点。)

如果您只想要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);

你可以用这样的东西拆分它:

var parts = {},
    bits = location.pathname.substr(1).split('/'); // get rid of first / and split on slashes

for (var i = 0; i<bits.length; i += 2) {
    parts[bits[i]] = bits[i+1];
}

然后,您可以使用parts.age访问age值。

在运行代码之前,将以下内容添加到php脚本中:

<?php
$getAgre = ( isset($_GET['age']) && strlen($_GET['age'])>0 )? $_GET['age'] : 'null';
echo '<script>var age = '. $getAge .';</script>';
?>

编辑:请确保您有一些安全的显示$ _GET [“年龄”],你的JS内容,当你在.slider()事件检查GET变量是否存在会更好之前检查

您可以使用window.location.href变量,该变量将为您提供整个当前URL,然后稍微使用该字符串来获取所需信息。 子串,拆分,甚至正则表达式。

这可行:

var ageMatch= window.location.href.match(/age\/([\d]*)/);
var age= ageMatch[1];

只是为了记录,您还可以轻松更新网址:

var newUrl= window.location.href.replace(/age\/([\d]*)/, age);
window.location.href= newUrl;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM