[英]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
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.