将查询字符串转换为url

时间:2013-11-26 17:10:34

标签: jquery url query-string

我是操作url字符串的新手。

基本上我有一个表格,其中有许多输入,用户可以填写。提交时,url格式如下:

  search.html?goingToArea=Yorkshire&leavingOn1=2013-11-26

删除goToArea和leavingOn1的最佳方法是什么,并用/来替换=

 ..Yorkshire/2013-11-26/...

我见过的大多数示例都是将URL转换为查询字符串(与我的问题相反),或者它们返回的是JSON对象,而不是URL。我看过RegEx和jquery BBQ。这些是正确的方法吗?它适用于移动网站,可以提供任何建议。感谢

4 个答案:

答案 0 :(得分:1)

使用javascript“replace”函数和Regex:

var urlString = "search.html?goingToArea=Yorkshire&leavingOn1=2013-11-26";
    urlString = urlString.replace(/\?(.+?)=/i, '/');
    urlString = urlString.replace(/\&(.+?)=/i, '/');

    console.log(urlString);
    // return => "search.html/Yorkshire/2013-11-26"

第一个操作替换“?”之间的所有内容和“=”由“/”(开头或URL)。

第二次操作取代“&”之间的所有内容和“/”一个“/”(其余的URL)。

答案 1 :(得分:0)

您可以使用Regex,但这是一个非正则表达式解决方案。不是很优雅但它应该有效。

var splitted = "search.html?goingToArea=Yorkshire&leavingOn1=2013-11-26".split('&'); 
var place = splitted[0].split('=')[1]; 
var date = splitted[1].split('=')[1]; 
console.log(place + '/' + date);

JSFIDDLE DEMO

显然,这假设URL的顺序正确。即,如果goingToArea&amp; <{1}}在网址中互换,这不起作用。

答案 2 :(得分:0)

 var qs = url.substring(url.indexof('?') + 1);
 var p = qs.split('&');
 var res = [];
 for( var i=0; i < p.length; p++ ) {
 var required_val = p.split('=')[1];
 res.push(required_val);
 } 

 var ans = url.substring(0, url.indexof('?')) + res.join('/');

答案 3 :(得分:-1)

你为什么要在JS中这样做?

最好的方法是使用webserver重写。

因此,如果您使用的是Apache HTTP Server,请在此处查看mod_rewrite - http://httpd.apache.org/docs/current/mod/mod_rewrite.html