如何在Javascript中创建查询参数?

时间:2020-03-06 14:30:40  来源:igfitidea点击:

有什么方法可以创建查询参数以在JavaScript中执行GET请求吗?

就像在Python中一样,我们有urllib.urlencode(),它接收一个字典(或者两个元组的列表)并创建一个类似''var1 = value1&var2 = value2'的字符串。

解决方案

如果我们使用的是原型,则有Form.serialize

如果我们使用的是jQuery,则有Ajax / serialize

我不知道有任何独立的功能来完成此操作,但是如果我们当前不使用库,则通过Google搜索它会发现一些有希望的选择。如果不是,那么我们确实应该因为它们是天堂。

该线程指向一些用于在php中转义URL的代码。有escape()unescape()可以完成大部分工作,但是我们需要添加一些额外的东西。

function urlencode(str) {
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

function urldecode(str) {
str = str.replace('+', ' ');
str = unescape(str);
return str;
}

干得好:

function encodeQueryData(data) {
   let ret = [];
   for (let d in data)
     ret.push(encodeURIComponent(d) + '=' + encodeURIComponent(data[d]));
   return ret.join('&');
}

用法:

var data = { 'first name': 'George', 'last name': 'Jetson', 'age': 110 };
var querystring = encodeQueryData(data);