我有一个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
答案 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