Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JavaScript中构造查询字符串的更简洁的方法_Javascript_Jquery_Query String - Fatal编程技术网

在JavaScript中构造查询字符串的更简洁的方法

在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")

我写的JavaScript不多。下面的代码可以工作,但是有没有更简洁的编写方法?我想构造一个查询字符串,该字符串将从可能为空的变量附加到URL。如果所有值都为null,则我需要一个空字符串。jQuery可供我使用(我正在使用它)

一些测试:

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)
});