在JavaScript中构造查询字符串的更简洁的方法
我写的JavaScript不多。下面的代码可以工作,但是有没有更简洁的编写方法?我想构造一个查询字符串,该字符串将从可能为空的变量附加到URL。如果所有值都为null,则我需要一个空字符串。jQuery可供我使用(我正在使用它) 一些测试:在JavaScript中构造查询字符串的更简洁的方法,javascript,jquery,query-string,Javascript,Jquery,Query String,我写的JavaScript不多。下面的代码可以工作,但是有没有更简洁的编写方法?我想构造一个查询字符串,该字符串将从可能为空的变量附加到URL。如果所有值都为null,则我需要一个空字符串。jQuery可供我使用(我正在使用它) 一些测试: console.log(constructQueryString("XXXXXX", "true")); // ?code=XXXXXX&flag=true console.log(constructQueryString(null, "true")
console.log(constructQueryString("XXXXXX", "true"));
// ?code=XXXXXX&flag=true
console.log(constructQueryString(null, "true"));
// ?flag=true
console.log(constructQueryString("XXXXXX", null));
// ?code=XXXXXX
console.log(constructQueryString(null, null));
// (an empty string)
更新:下面是我在项目中如何使用代码的更多上下文
code = $el.attr("data-code") || null;
flag = $el.attr("data-flag") || null;
qsObj = {};
if ( code ) {
qsObj["code"] = code;
}
if ( flag ) {
qsObj["flag"] = flag;
}
queryString = ( !$.isEmptyObject(qsObj) ) ? "?" + $.param(qsObj) : "";
$.ajax({
"type": "POST", "contentType": "application/json; charset=utf-8",
"url": url + queryString,
"data": JSON.stringify(reqBody)
});
你为什么不传递一个对象?同意zeroflagL:你想用这个字符串做什么?也许使用对象是更好的选择。对象或数组会更好地为您服务。zeroflagL,M'sieur Toph',DevlshOne:我用更多的上下文更新了这个问题。我实际上没有一个函数,constructQueryString——我只是创建它来简化事情。这个问题是否应该转移到?
code = $el.attr("data-code") || null;
flag = $el.attr("data-flag") || null;
qsObj = {};
if ( code ) {
qsObj["code"] = code;
}
if ( flag ) {
qsObj["flag"] = flag;
}
queryString = ( !$.isEmptyObject(qsObj) ) ? "?" + $.param(qsObj) : "";
$.ajax({
"type": "POST", "contentType": "application/json; charset=utf-8",
"url": url + queryString,
"data": JSON.stringify(reqBody)
});