从URL中提取单词

5

我有一个搜索功能,想在搜索输入框中显示搜索词。

我的URL是:search-1.html?keyword=XXXXXX

如何获取并在输入框中显示它?

提前感谢您的帮助。

4个回答

3

是的,我喜欢它。我已经养成了一个习惯,在大多数我的网站上加载它,因为它对于在JS中快速轻松地访问GET变量非常有用。 - Todd

2
如果url中只有一个“key=value”,你可以使用简单的正则表达式,如下所示:
var theValueYouWant = window.location.href.match(/keyword=(.+)/)[1]

并像这样设置输入的值

$('input').val(theValueYouWant)

如果您想更彻底地解析GET字符串,可以使用此函数...
gets = {};
$.each(location.search.replace(/^\?/,'').split('&'),function(k,v){
    bits = v.split('=');
    gets[bits[0]] = bits[1];
});

1

正则表达式解决方案:

var S = window.location.search; // "?keyword=..." etc.
var T = S.match(/^\?(?:[^\b]*&+)?keyword=([^&]*)/);
if (T)
   T = T[1]
else
   T = "no keywords found"

如果在查询字符串中为“keyword”提供了多个值(例如?keyword=XXX&keyword=YYY),则正则表达式只会找到第一个值(例如XXX)。即使查询字符串中有其他变量,此正则表达式也可以正常工作。

@pinkie,这是因为jsfiddle中的脚本运行在一个“iframe”中。如果你使用iframe网址http://fiddle.jshell.net/pLHGh/show/light/?hi=1&hi2=2它就会起作用。 - Gabriele Petrioli

0

无需jQuery的解决方案:

<script type="text/javascript">
var $_GET=[],pairs=location.href.toString().substring(location.href.toString().indexOf("?")+1).split("&");for(key in pairs){pos=pairs[key].indexOf("=");$_GET[pairs[key].substring(0,pos)]=decodeURIComponent(pairs[key].substring(pos+1).replace(/\+/g," "))};

// Now just access with $_GET
// example...
keyword = $_GET["keyword"];
</script>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接