有什么方法可以创建用于在 JavaScript 中执行GET 请求的查询参数?
就像在 Python 中一样urllib.urlencode(),它接受一个字典(或两个元组的列表)并创建一个像'var1=value1&var2=value2'.
有什么方法可以创建用于在 JavaScript 中执行GET 请求的查询参数?
就像在 Python 中一样urllib.urlencode(),它接受一个字典(或两个元组的列表)并创建一个像'var1=value1&var2=value2'.
干得好:
function encodeQueryData(data) {
   const ret = [];
   for (let d in data)
     ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
   return ret.join('&');
}
用法:
const data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 };
const querystring = encodeQueryData(data);
URLSearchParams有越来越多的浏览器支持。
const data = {
  var1: 'value1',
  var2: 'value2'
};
const searchParams = new URLSearchParams(data);
// searchParams.toString() === 'var1=value1&var2=value2'
Node.js 提供了查询字符串module。
const querystring = require('querystring');
const data = {
  var1: 'value1',
  var2: 'value2'
};
const searchParams = querystring.stringify(data);
// searchParams === 'var1=value1&var2=value2'
功能性的
function encodeData(data) {
    return Object.keys(data).map(function(key) {
        return [key, data[key]].map(encodeURIComponent).join("=");
    }).join("&");
}   
Zabba在对当前接受的答案的评论中提供了一个建议,对我来说是最好的解决方案:使用jQuery.param()。
如果我使用jQuery.param()原始问题中的数据,那么代码很简单:
const params = jQuery.param({
    var1: 'value',
    var2: 'value'
});
变量params将是
"var1=value&var2=value"
有关更复杂的示例、输入和输出,请参阅jQuery.param()文档。
利用Object.entries(),它返回一个对象[key, value]对的数组。例如,因为{a: 1, b: 2}它会返回[['a', 1], ['b', 2]]. 仅 IE 不支持(也不会)。
const buildURLQuery = obj =>
      Object.entries(obj)
            .map(pair => pair.map(encodeURIComponent).join('='))
            .join('&');
buildURLQuery({name: 'John', gender: 'male'});
"name=John&gender=male"