使用参数名称传递表单参数,并将“&”替换为“ /”

时间:2019-08-18 16:03:51

标签: javascript html

我有一个html表单,我正在将这些字段传递到URL到订舱代理书中。它最初一直有效,直到更改了它们采用值的方式。

我以为该函数将使用“ /”而不是“&”,js文件可与日历显示一起使用,所以我不确定我在做什么错吗?

HTML表单:

<form id="form1" role="form" action="https://example.com/111" class="" method="post"> 

(form here)

<button class="btn btn-warning btn-md floatright">Book</a>

.js文件:

function Querystring(qs) { // optionally pass a querystring to parse
    this.params = {};

    if (qs == null) qs = location.search.substring(1, location.search.length);
    if (qs.length == 0) return;

    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
    qs = qs.replace(/\+/g, ' ');
    var args = qs.split('/'); // parse out name/value pairs separated via &

    // split out each name=value pair
    for (var i = 0; i < args.length; i++) {
        var pair = args[i].split('');
        var name = decodeURIComponent(pair[0]);

        var value = (pair.length == 2)
            ? decodeURIComponent(pair[1])
            : name;

        this.params[name] = value;
    }
}

我正在传递https://example.html?arrival=2019-08-10&departure=2019-08-13

我需要https://example.html/2019-08-10/2019-08-13

2 个答案:

答案 0 :(得分:0)

这不是最可靠的解决方案,它做出的假设是您不会喜欢格式错误的查询参数,但这可能对您有帮助:

function QueryString(qs) {
    const [url, queryParams] = qs.split('?')
    return url + '/' + queryParams.split('&').map( param => param.split('=')[1]).join('/')
}

答案 1 :(得分:0)

已引入URLSearchParams对象来处理解析和检索查询字符串参数。这样,解析URL的所有丑陋部分就被抽象了。一般警告,Internet Explorer尚不支持此警告。

function Querystring(qs) {
	var inputUrl = qs || window.location.search;
	var domainPart = inputUrl.substring(0, inputUrl.indexOf('?'));
	var searchPart = inputUrl.substring(inputUrl.indexOf('?'));

    var urlParams = new URLSearchParams(searchPart);
    var keys = urlParams.keys();
    var url = domainPart;
    
    for(let key of keys) { 
      url += '/' + urlParams.get(key);
    }
    
    return url;
}

console.log(Querystring('https://example.com?arrival=2019-08-10&departure=2019-08-13'));

签出文档:https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams